Huvud som följer med blickriktning
Allmänt
Denna sida tar en del resurser så du bör absolut använda firefox, chrome eller liknande med snabbt javascript.

Okej, vad som händer här är alltså att huvudet justerar sig så att det stödjer ögonens blickriktning. Jag har implementerat lite ideer om ögon kontra huvudets rörelser. Klicka på slumpa ny fokusvektor.

Simulator
Vrid modellen medsols eller motsols.
Vrid på de olika lederna: +P1 | -P1 | +P2 | -P2 | +P3 | -P3 | +P4 | -P4 | +P5 | -P5
Nollställ | Slumpa ny fokusvektor

Implementering
När väl huvudets modell är inknappad är det lätt att få det att få huvudet att följa blickriktningen. Nedanstående funktion gör jobbet. Den anropas 5 gånger per sekund. Om ögonen tittar för långt åt höger eller vänster justerar den huvudet för att komma närmare blickriktningen.

Vinkeln l_beta är alltså ögonens vertikalvinkel och normalläge är 90 grader (PI/2 radianer). Vinkeln d_vinkel är ögonens horisontalvinkel som också har sitt normalläge 90 grader. Avvikelser från dessa 90 grader kompenserar jag genom att rotera lederna lite. Här kompenserar jag med en tredjedel av avvikelsen från 90 grader i varje anrop.
function focus_head()
{
	if(l_beta>(Math.PI/2))
	{
		move_p5((l_beta-(Math.PI/2))/3);
		redraw();
	}
	if(l_beta<(Math.PI/2))
	{
		move_p5((l_beta-(Math.PI/2))/3);
		redraw();
	}
	if(d_vinkel>(Math.PI/2))
	{
		move_p1(((Math.PI/2)-d_vinkel)/3);
		redraw();
	}
	if(d_vinkel<(Math.PI/2))
	{
		move_p1(((Math.PI/2)-d_vinkel)/3);
		redraw();
	}
}

Fördela vinkel mellan leder
nackleder benamning Den här lösningen flyttar på led p1, medsols eller motsols, samt p5 för ner och upp. Övriga leder går att flytta med bibehållen vinkel. Man kan tänka sig en mer sofistikerad lösning där t.ex. p2 och p5 tar halva vinkeln var för upp och ner. Man kan också tänka sig att fördela upp/ner -rörelsen mellan p2 och p5 så att den led som rört sig minst från normalläge tar mest av nya vinkeln, så att huvudet hålls så upprätt så mycket som möjligt. Många lösningar är tänkbara.