Direzione curve

ma in rh-py esiste un metodo che ti permetta di visualizzare la direzione di una curva?

Preso un punto della curva, ad esempio il punto iniziale, calcoli la derivata con cui potrai far riferimento per disegnare un’entità, ad esempio una linea. Per avere un qualcosa di interattivo la cosa è più complessa … Puoi provare partendo da questo link

ciao Sergio, e grazie per la risposta.

eeee ho fatto alcune ricerche per capire la tua soluzione usando la derivata. . . . :exploding_head: :exploding_head:

scherzi a parte. “credo” di aver capito il concetto in sé per sé. dimmi se sbaglio:
è un discorso che per applicarlo bisogna usare i valori “t” parametrici giusto?

la derivata di una funzione, è essa stessa una funzione
la derivata di una funzione calcolata in un punto è un numero preciso
comprentendo ciò, si è compresi il 30/40% dell’apparato matematico alla comprensione della fisica

la citazione fa parte della spiegazione trovata, non credevo che fossero così importanti le derivate :sweat_smile:

alla fine se quanto ho detto è giusto, non dovrei avere problemi usando anche il link che hai postato :+1:

ps ma per disegnare una freccia invece della linea è possibile mai che ci vogliono 2 pagine di codici?

def GetPointDynamicDrawFunc( sender, args ):
  args.Display.DrawLine((0,0,0), args.CurrentPoint, System.Drawing.Color.Red, 2)

gp.DynamicDraw += GetPointDynamicDrawFunc

ma volendo usare il codice del link,
non posso eliminare la definizione per inserirla direttamente dove viene chiamata?

… per fare guai? :joy::joy::joy:
Scherzi a parte, pensi sia più facile programmare tutti gli eventi che determinano l’aggiornamento delle finestre di rhino??? Se muovi il mouse, se cambi finestra, se ridimensioni la finestra, se perdi il primo piano …
Poi non capisco perché sarebbe così difficile e complesso disegnare una freccia : un cilindro ed un cono opportunamente posizionati rispetto l’origine e disegnati a video previa opportuna trasformazione.

https://developer.rhino3d.com/6/api/RhinoCommon/html/M_Rhino_Display_DisplayPipeline_DrawArrow_1.htm

se dovessi usare i comandi rhino come detto, non mi sarebbe complicato creare linee o frecce,
ma osservando come creare una linea usando common, volevo fare lo stesso per le frecce.
ovviamente senza complicarmi troppo la vita, nel link che ho postato con python è un bel pò lungo lo script.
ho provato a scorporare solo ciò che mi serviva, ma non ci sono riuscito, forse mi sfusse qualcosa. . . .

chiedevo, essendo che non conosco come funzionano le dinamiche usando common,
con python i metodi vengono inclusi in variabili, per poi inglobare tali variabili in altri metodi.
non’é corretto farlo, ma in python posso anche includere metodi in altri metodi senza usare variabili,
con common volevo capire se era possibile fare lo stesso, essendo che non comprendo perché nò?

esempio: (eliminare la definizione) includendo “Display.DrawLine” con “DynamicDraw”

gp.DynamicDraw += Display.DrawLine((0,0,0), CurrentPoint, System.Drawing.Color.Red, 2)

a parte sapere se sia possibile e come riuscirci, credo che per creare delle linee per indicare la direzione delle curve, questo metodo non vada proprio bene, essendo che il “CurrentPoint” è un evento dinamico.

ho cercato anche altri metodi per disegnare linee statiche per poi eliminarle, ma navigare nella guida del common mi è complicato, sopratutto trovare soluzioni “ci vorrebbe un corso solo per sfogliare la guida” :slight_smile:

Non capisco cosa vuoi dire … sdk di rhino consente la personalizzazione dell’evento selezione ed in particolare di rendere accattivante il comando in fase di selezione creando effetti grafici attraverso il metodo DynamicDraw oppure aggiungendo una DisplayConduit alla DisplayPipeLine. Nel tuo caso per primo dovrai selezionare la curva e derivare la classe DisplayConduit aggiungendo un riferimento alla curva (o crearne una copia locale), quella che tu chiami variabile. Nel metodo DrawForeground dovrai calcolare il vettore tangente e disegnare a video la freccia opportunamente orientata.
Nel primo post parlavo di derivata perché di fatto è un vettore locale tangente alla curva L’oggetto curve include il metodo TangentAt che sarà più immediato.
Sulla lunghezza del codice non concordo. Per scrivere 100 righe di codice ci puoi impiegare 2 minuti come 1 ora, dipende dalla complessitĂ ; inoltre 1000 righe di codice possono essere molto piĂą comprensibili di 50 righe.

1 Mi Piace