Rotation over een lijn

Status
Niet open voor verdere reacties.

meerminman

Gebruiker
Lid geworden
18 sep 2006
Berichten
17
Hoi allemaal,

Ik ben al een tijdje aan het prutsen met deze som en ik krijg het maar niet voor elkaar.
Ik hoop dat jullie een oplossing weten, dan kan ik weer rustig slapen.



Veder is dit al wat ik heb, misschien kunnen jullie hier wat mee. (In dit voor beeld kan je het balletje nog niet roteren)
http://www.swfupload.com/view/120804.htm


De som:
Code:
       percentage = (C._x - A._x) / (C._x - B._x);
       D._x = C._x - (C._x - B._x) * percentage;
       D._y = C._y - (C._y - B._y) * percentage;
 
Laatst bewerkt:
Zoals het er nu uit ziet, moet je gebruik maken van snijpunten...

Ik heb niet zoveel tijd om er naar te kijken maar bij gebrek aan andere antwoorden:

* Bereken de formule voor de lijn die gaat door de 2 gegeven punten (moet niet zo moelijk zijn)
* Bereken de formule van de lijn A, door middel van het ene gegeven punt en de hoek die hij maakt

* Bereken vervolgens het snijpunt van beide lijnen

Daar zit dan punt D. Je moet dan alleen nog bepalen of het punt ook daadwerkelijk tussen die 2 punten inligt misschien.
 
Hoi
Bedankt voor de reactie :) wat jij zegt ben ik ook aan het proberen maar wild me niet echt lukken.

Link: http://www.swfupload.com/view/113493.htm
Zie dit is al wat ik nu heb, dit komt al in de buurt alleen als je het rondje(A) veder weg versleep dat gaat vierkantje(D) ook veder weg en die moet nauw juist de positie hebben waar het rondje(A) naartoe wijst.


Ik hoop dat je het beetje snapt.
Hier is de volledige code:
Code:
B.onPress = C.onPress = d.onPress = A.onPress= function()
{
        startDrag(this);
}
A.onRelease = C.onRelease = B.onRelease = C.onReleaseOutside = B.onReleaseOutside = A.onReleaseOutside = function()
{
        stopDrag();
}
function GoedeRotation (Rotation) // flash werk niet met rotaties van 360.
{
        if (Rotation < 0)
        Rotation = Rotation + 360 ;
        else
        Rotation = Rotation;
        
        return Rotation;
}


function onEnterFrame()
{
        this.clear();
        this.lineStyle(1);
        this.moveTo(B._x, B._y);
        this.lineTo(C._x, C._y);
        
	   Rotation = GoedeRotation(-Math.atan2(B._x - C._x, B._y - C._y) * (180/Math.PI));
	   A._rotation = Rotation - 90;
	   
	   RotationX = (100 / 90) * Rotation;
	   RotationY = 100 - RotationX;


       // positioneren
       percentageY = (C._y - A._y) / (C._y - B._y);
	   percentageX = (C._x - A._x) / (C._x - B._x);

	  percentage = ((percentageY / 100) * RotationY) + ((percentageX / 100) * RotationX); 
		
	 	// beweeg D
       D._x = C._x - (C._x - B._x) * percentage;
       D._y = C._y - (C._y - B._y) * percentage;


}

En het gaat om dit stukje in de code:
Code:
	   Rotation = GoedeRotation(-Math.atan2(B._x - C._x, B._y - C._y) * (180/Math.PI));
	   A._rotation = Rotation - 90;
	   
	   RotationX = (100 / 90) * Rotation;
	   RotationY = 100 - RotationX;


       // positioneren
       percentageY = (C._y - A._y) / (C._y - B._y);
	   percentageX = (C._x - A._x) / (C._x - B._x);

	  percentage = ((percentageY / 100) * RotationY) + ((percentageX / 100) * RotationX); 
		
	 	// beweeg D
       D._x = C._x - (C._x - B._x) * percentage;
       D._y = C._y - (C._y - B._y) * percentage;

(PS: Het gaat mij hier om de som niet om de code dus je hoeft geen flash code te geven als dat niet lukt)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan