Rotazione vettore

nell’esempio di Dale ad un certo punto del codice usa il comando:
“rs.CurveTangent(curve_id, curve_dom[0])”

vorrei capire se è una sua scelta o si è obbligati oppure se c’è un’altro modo?

Per fare cosa ???

ciao Emilio, vorrei capire un po meglio come funziona la rotazione dei vettori

non comprendo la necessita di CurveTangent che funzione ha?

Ciao Salvio

rs.CurveTangent serve per ottenere il vettore tangente alla curva.
Visto che il tizio che ha postato vuole ruotare il vettore tangente alla curva, Dale lo ricava.

Non c’entra niente con la rotazione.
La rotazione la fai dopo … ma prima devi avere un vettore da ruotare. :wink:

ma usando VectorCreate prendendo inizio e fine curva, dovrebbe funzionare?

In che senso fuzionare ?

Se e’ per fare una prova un vettore vale l’altro, quindi puoi benissimo prendere questo vettore, ruotarlo e vedere cosa succede.

Se invece vuoi il vettore tangente a inizio curva (come chiedeva il tizio), allora il vettore che dici tu e’ una cosa diversa, almeno nel caso generale.

sicuramente mi manca questo passaggio perchè non funziona come immaginavo

che differenza ci sono tra i due vettori? (VectorCreate e rs.CurveTangent)

edit: lo so ti faccio scavare nei cassettini della memoria come dice Gerry Scotti :smile:

Nessun cassettino. :wink:

Il vettore tangente indica la direzione della curva in quel punto.

Il tuo dubbio riguarda cosa sia la retta tangente a una curva …

… O cosa sia un vettore ?

veramente un po di tutto Emilio ahahahah
(ovviamente se non si conoscono le basi)

mmmm forse forse vediamo se è questo il ragionamento:
in una retta la direzione è sempre la stessa ma in una curva invece può cambiare giusto?

Edit: comunque vero, la retta tangente mi è nuovo come contetto

Giusto.

La retta tangente tocca la curva in un punto.
E in quel punto hanno la stessa direzione.

Non credo di riuscire a spiegare la tangente a parole …
Se usi il comandi Dir su una curva, Rhino ti disegna una piccola freccia, che puoi trascinare lungo la curva.
Quella freccia indica la direzione della tangente alla curva in quel punto

Qui c’e’ una piccola definizone GH che, una volta linkata una curva, dovrebbe mostrarti (una parte del) la retta tangente.
Col primo silder ti sposti lungo la curva
Col secondo disegna un pezzo piu’ o meno lungo della retta.

… Se funziona, perche’ qui non riesco a vedere la preview …:confused:
Spero che sia solo qualche settaggio andato a pallino qui …

tangent.gh (9,2 KB)

ottima rappresentazione grazie Emilio, adesso mi è un po più chiaro il concetto :+1:
(anche se guardando lo schema col piano mi verrebbe un’altra domanda ahahahah)

ritornando alla domanda del post, sarebbe possibile ottenere lo stesso risultato senza usare CurveTangent?

… E io ritorno alla stessa risposta … :smile:

A quale risultato ti riferisci ?

Cos’e’ che vuoi fare senza usare rs.CurveTangent ???

ottenere lo stesso risultato di Dale

Dale ha mostrato come ruotare il vettore tangente al punto iniziale della curva.
Se non ricavi il vettore tangente con rs.CurveTangent, come fai a ruotarlo ?

mi chiedevo se ci fosse un altro modo?

edit:
nel senso che non mi serve il vettore tangente ma solo la direzione ed il punto centrale

… Devo essere abbastanza esaurito …
Continuo a non capire …

Non importa.
Spero che si faccia vivo qualcuo piu’ perspicace. :slight_smile:

Ciao !

hai ragione a fine settimana siamo tutti stanchi :slight_smile:

nel caso giusto come concetto (anche se poi bisogna sapere come ragionamento Rhino)

ho un oggetto punto in una parte qualsiasi del piano
partendo dal punto citato indico la direzione
ora quel punto nella direzione creata
deve spostarsi di tot distanza
poi ruotare di 90 gradi
dal punto iniziale

la domanda si può racchiudere in: quanti comandi debbo richiamare per ottenere ciò?
secondo il mio ragionamento dovrei usare: VectorAdd - VectorRotate - VectorScale
sono obbligato ad usare CurveTangent? posso sostituirlo con VectorCreate?

ok trovata la sequenza

VectorAdd VectorRotate VectorScale VectorUnitize VectorCreate

Emilio grazie sempre della pazienza :+1:

ps ma VectorUnitize nella pratica come funziona?

Ciao Salvio

rs.VectorUnitize scala il vettore per ottenere una lunghezza pari a 1
( Non puoi utilizzarlo sul vettore nullo )

Ciao Emilio,

in che senso non posso usarlo con un vettore nullo? quando avvio il comando ovviamente
in VectorCreate gli inserisco i due punti che richiede, che viene racchiuso in VectorUnitize

mi chiedevo che tipo di calcolo facesse VectorUnitize e se viene usato solo con VectorCreate
faccio un esempio questo è il risultato di Print di due punti con i rispettivi comandi

Punto A = 0.000,0.000,0.000
Punto B = 10.000,5.000,0.000
VectorLength = 11,18
VectorCreate = -10.000,-5.000,0.000
VectorUnitize + VectorCreate = -0.894,-0.447,0.000

  1. Length mi da la distanza
  2. Create in pratica ritorna gli stessi valori del PuntoB ma in negativo mentre
    se i punti AeB sono negativi li riporta in positivo
  3. Mentre Unitize + Create fa un calcolo particolare che non saprei come ottenerlo
    forse conoscendo più affondo come funzionano tutti, potrei capirei anche come usarli in altri modi…