Rotazione vettore

Se lavori sul piano (cioe’ sempre con Z costante), potresti provare cosi’:
Dati i punti A e B e il punto cliccato P

ab = rs.VectorCreate( B, A )
ap = rs.VectorCreate( P, A )
asse = rs.VectorCrossProduct( ab, ap )

su “asse” dovresti ottenere l’asse di rotazione.

Non ho provato, se vuoi vedi tu se funziona … :slight_smile:

Il cross product (prodotto vettoriale o prodotto esterno in italiano) e’ quello che segue la regola della mano destra.
Chiudi la mano destra, poi estendi pollice, indice e medio in modo che formino tra di loro angoli di circa 90 gradi.

CrossProduct( pollice, indice ) ti da’ la direzione del medio.

(Per i sistemi di riferimento destrorsi, come quello dei piani di Rhino, abbiamo

CrossProduct( asseX, asseY ) => asseZ
CrossProduct( asseY, asseZ ) => asseX
CrossProduct( asseZ, asseX ) => asseY

Se inverti i due operandi ottieni il vettore opposto

Se gli operandi sono paralleli ottieni il vettore nullo )

Per la lunghezza del vettore ottenuto dal prodotto esterno c’entra l’angolo tra i due vettori utilizzati, ma a noi qui dovrebbe servire solo la direzione.