Trovare punti perpendicolari da un punto su curva chiusa

Se ti riferisci a rhinoscriptsyntax, anche lui utilizza RhinoCommon, quindi in genere la precisione dei calcoli e’ la stessa. :slight_smile:

intendevo quando con lo snap “perp” di Rhino, verrà usato Common oppure anche C/C#
in quei casi verrà usato qualche metodo più articolato che cerca di risolvere eventuali errori?

E’ possibile/probabile, certo.
Ma potrebbe essere un algoritmo riservato.
Non ho idea se sia possibile avere informazioni a riguardo …

questo sicuramente, un’azienda di software non lascerebbe mai trapelare qualcosa sui suoi algoritmi
algoritmo è tipo l’ingrediente segreto per uno chef, non lo dicono nemmeno sotto tortura :smiley:

anche dietro ai metodi messi a disposizione ci sono calcoli e algoritmi specifici
se non erro, ci sono stati anche cause, aziende sottrassero algoritmi ai concorrenti

Definizione banale per ottenere una precisione pressoché assoluta.
perpendicolare c.gh (11,7 KB)

2 Mi Piace

ciao Leopoldo,

aumentando a 11 decimali ovviamente si avrà una precisione maggiore,
che se non erro era anche quello che diceva Emilio,
il problema che aggiungere più decimali si impalla il pc (nel mio caso ancora maggiore)
essendo che nel tuo caso hai inserito 3 parametri “t” ma dovendo dividere la curva riparametrizzata 0-1
con un valore “t” con 11 decimali non so le curve piccole ma le grandi non saprei la vedo molto dura,
personalmente le curve che ho provato nei giorni scorsi, non molto grandi, e già con 4 decimali attendevo.

ps tempo addietro si parlò che non ricordo bene se Py o Gh gestiva fino a 12 decimali
quindi ovviamente arrivando a 11 decimali si arriva molto vicino a l’angolo voluto

come soluzione a differenza degli esempi postati prima, una prova da fare e usando un ciclo, provando il valore “t” della curva ogni singolo valore a 11 decimali come hai fatto, sperando che mi riesca ad elaborarli.

edit:
forse è per questo che non è stato fatto un comando in Rh o un metodo nella programmazione
una tolleranza così alta sarebbe risultato troppo laborioso, mentre attivando lo snap in Rh
quando col mouse ci si muove vicino alla curva, ipotizzo venga creata un range (segmento) di curva
che dividendo il parametro “t” anche con molti decimali, essendo un range limitato si riesce a gestire.

Wei ragazzi!

Il punto di perpendicolarità quasi sempre si trova in una zona della curva dove la tangente della curva crea un angolo con il vettore “pt-su-curva <> pt-campione” che passa da <90° a >90° (Pi/2)… quindi, il solito giochino del usare un grafico di derivata (che ho già postato varie volte in altri casi) … funziona.

perp3


pt perpendicolarità su curva.gh (10,6 KB)

5 Mi Piace

ciao Riccardo, grazie per la definizione

confermo, che funziona come la prima :+1:

ho provato su varie curve che mi interessavano ed ho riscontrato risultato favorevole su tutte.

al posto della divisione della curva per 1000 punti uso il range a 1000 come valore t sulla curva
e come tolleranza in Rh ho 0,001 ipotizzo che dovrebbe andare sempre bene con qualsiasi curva
non so se è una conferma a tale ipotesi il fatto che se aggiungo uno 0 ai 1000 del range mi torna un errore

scusate la domanda sciocca:
ma inserendo “Pi/2” si ottiene una precisione maggiore,
a differenza di 90 gradi con l’opportuna conversione?

il risultato è lo stesso.
Qualsiasi angolo in gradi viene a prescindere convertito in radianti facendo * Pi/180 …
È solo una questione di … interfaccia.

Bisogna stare attenti alle conversioni implicite, tipo far “passare” un valore dentro un panel o parametro stringa e quindi perdere molti decimali, arrotondamenti vari.

ok grazie Riccardo per la precisazione,

ricordando che il Pi greco ha molteplici decimali
mi era venuto il dubbio che lo rendesse più preciso :+1:

ottimo a saperlo

eeee me ne sto accorgendo ultimamente, con le conversioni sto avendo alcune problematiche :sweat_smile: