Flytta, skala och rotera objekt
Flytta ett objekt
För att flytta och skala ett objekt används dynamiken Move. Vi ska till att börja med titta
på hur man kan flytta objektet. Objektet kan flyttas i x- och y-led och för varje riktning
kopplar man en analog signal som specifierar förflyttningen relativt ursprungspositionen.
Signalvärdet kan räknas om till en förflyttning i Ge-koordinater med en faktor (Move.XFactor
och Move.YFactor) och ett offset (Move.XOffset och Move.YOffset).
I det här exemplet ska vi flytta en rektangel i x-led. Vi ritar rektangeln och gör en grupp
av den.

Fig En rektangel
När den är grupperad kan vi sätta Move i DynType och attributen för Move visas i
objektseditorn. Eftersom vi ska flytta i x-led kopplar Move.XAttribute till signalen H4-Av1
i databasen. Vi mäter upp området som rektangeln ska flyttas på, och kommer fram till att
när signalen varierar mellan 0-100 ska rektangeln flyttas 20 Ge-enheter i bilden. Genom att
placera rektangeln på 0-punkten behöver vi inte ange något offset, men vi måste skala ner
signalvärdet med 20/100 = 0.2 som vi lägger in i Move.XFactor. I exemplet har vi även lagt
in en x-axel för att visa storleken på förflyttningen.

Fig Move dynamik på rektangeln
Resultatet blir att när signalen är 0 ligger rektangeln kvar på ursprungspositionen. Vid
värdet 60 har rektanglen flyttats 12 enheter, se figuren nedan, och vid värdet 100 har
rektangeln flyttas 20 enheter.

Fig Rektangeln flyttad 12 Ge-enheter i x-led
Skala ett objekt
Move dynamiken kan även användas för att skala ett objekt. Skalningen kan ske i x- och y-led
och för varje riktning kopplar man en analog signal som specifierar storleken på skalningen.
Vi lägger in skalning i x-led för rektangeln i exemplet ovan. Move.ScaleXAttribute kopplas
till signalen H4-Av2. Vi måste också räkna ut en skalfaktor och lägga in i Move.ScaleXFactor.
Rektangeln har bredden 2 enheter och med skalfaktorn 0.1 kommer ett signalvärde på 100 att
ge en bredd på 20 enheter.

Fig Signal och skalfaktor angivna
Resultatet blir att när signalvärdet är 0, har rektanglen ingen bredd alls, utan ritas som
ett streck. Vid signalvärdet 25 ser det ur som i figuren nedan, rektanglen är skalad 2.5
gånger, och när signalvärdet är 100 är rektanglen skalad 10 gånger och täcker hela x-axeln.

Fig Signalvärdet 25 ger en skalning på 2.5 gånger
Rotera ett objekt
För att roterar ett objekt använder man dynamiken Rotate. Rotate kopplas till en analog
signal som innehåller rotationen i grader.
Rotate har vissa begränsningar eftersom rektanglar och ellipser endast kan roteras i steg
med 90 grader. Därför använder man företrädesvis polylinjer, linjer och cirklar med Rotate.
Vi ritar en enkel visare med ett cirkel-segment och en polylinje. Efter att ha grupperat dem
sätter vi Rotate i DynType. Vi ritar även en cirkulär skala med ett AxisArc objekt.

Fig Visare med rotations-dynamik
Visaren kopplas till den analoga signalen H4-Av1. Vi måste också specifiera den punkt som
objeket ska rotera runt. I det här fallet är det cirkelbågens mittpunkt som har
x-koordinaten 9 och y-koordinaten 1. Rotationspunkten läggs in i Rotate.x0 och Rotate.y0.
Skalan som vi har ritat har området -100 - 100, vilket är området för signalen H4-Av1. Denna
ska räknas om till grader och motvarande rotation är -90 - 90 grader, dvs skalfaktorn är 0.9.
Vi lägger in 0.9 i Rotate.Factor.

Fig Visaren kopplade till en analog signal och skalfaktorn satt till 0.9
Resulatet kan ses i figuren nedan.

Fig Värdet 40 ger en rotation på 36 grader