No closest point

closestpoint

sia in Rh che Py o Gh esistono modi preposti per ottenere il punto più vicino tra due oggetti.

nella foto postata ho una curva e una retta dove vengono trovati i punti più vicini (punti selezionati)
l’altra retta invece viene indicato il punto più distante tra la curva e la seconda retta
(che dovrebbe essere anche perpendicolare al punto selezionato della curva)

mi chiedevo se esista un metodo per trovare i punti più distanti tra due oggetti?
(per lo meno io non ne ho mai sentito parlarne)

ps nel caso, in mancanza di un metodo apposito, come procedereste in una situazione simile?
(prendendo in considerazione solo la curva centrale e la retta col punto più distante)

ma non saprei, a volte ripensando e ri-osservando la domanda postata mi vengono nuove idee

nei post passati mi fu proposto ExtremeParameters per estrarre i quad di una curva
essendo che tale metodo ha bisogno di un parametro direzione
in questo caso potrei inserire la direzione della seconda retta?
(inizio a provare)

Credo sia una di queste due, no ? :slight_smile:

… escludendo la perpendicolare (la più breve)… andrebbe misurata ogni altra combinazione di punti.

ciao Giuseppe,

ma in questo caso la strada più breve perpendicolare corrisponde al punto iniziale della curva non trovi?

concordo su questo, ma alla conclusione di tutte le combinazioni possibile ci dovrà essere il più distante?

(intenti altre combinazioni su come calcolare la distanza mentre la più vicina è sempre perpendicolare)

ed in questo caso si potrebbe stabilire la più distante come “perpendicolarità”?

Emilio “l’enigmista” :grin: :grin:

la distana maggiore che intendevo sarebbe tipo:
la seconda retta diciamo che funge da piano ed indicherebbe l’asse X
ed il punto centrale della curva selezionato corrisponderebbe allo snap Quad

in pratica il punto che mi interesserebbe sarebbe quello centrale dei componenti selezionati in alto

credevo che fosse una buona idea, ma a quanto pare nella def inferiore non mi da il risultato di sopra

esiste il componente extremes nei componenti curve di Gh che in questo caso impostando un piano funzionerebbe, peccato che se la curva è chiusa mi riporta solo i due estremi, maggiore e minore.

io al momento ruoto la curva e mi prendo il quad.
altra soluzione creare un dominio tramite subcrv
ma onestamente vorrei evitare queste contorsioni.

Ah, Ok, ti serve il punto con distanza massima (perpendicolare) dalla retta. :grinning_face_with_smiling_eyes:

Butto li’ un’idea …

bounding box della curva allineata alla retta.
estrai il bordo ‘alto’ della bbox e intersechi con la curva
… Poi come si faccia in GH non lo so … :grinning_face_with_smiling_eyes:

Forse così.

1 Mi Piace

Non puoi risolvere un problema riferendosi al solo caso indicato. Io sono partito da una generalizzazione che include combinazione di curve aperte e chiuse… planari e giacenti sullo stesso piano.

Assolutamente si: sarà una lista con N distanze su cui fai un sorting con chiave distanza e poi in List item con N = -1

2 Mi Piace

In rhinoscript metodo CurveDeviation … forse.
Immagino ci sia il corrispondente anche in python.
Ciao

1 Mi Piace

Ciao Leo, a occhio la distanza fra estremi opposti è maggiore.

Ciao Giuseppe.
Direi che, più che maggiore, è quasi doppia,
Ma pensavo a una retta perpendicolare.
E non è neanche una buona idea.

premessa la domanda come spiegato nasceva con l’esempio nella foto postata inizialmente
dove c’era la curva sulla parte superiore e venivano trovati i punti più vicini
e mi chiedevo come mai non esistesse un modo per trovare il punto più lontano con la curva inferiore

ottimo Sergio ed il comando deviazione c’é anche in Rh (il risultato sarebbero le linee bianche e rossa)
in verità il comando deviazione l’ho avevo anche già usato in altre situazioni in questa non ci avevo pensato
ho trovato anche il metodo script per RhScript e di sicuro è uguale per Python.

cercando sul forum internazionale ho trovato questi risultati per RhinoCommon potrebbe essere:

https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Curve_TangentAt.htm

https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Curve_DerivativeAt_1.htm

ciao Leopoldo, io ho provato in questo modo “la foto a Dx” sembra che funzioni
(sempre tenendo conto di una curva aperta simile a quella postata)

Ma manca un pezzo.

Ho trovato questi :slight_smile:

Curve.GetDistancesBetweenCurves Method (rhino3d.com)

Rhino - RhinoScriptSyntax (rhino3d.com)

1 Mi Piace

si infatti l’impostazione del mio piano l’ho dovuto impostare con i punti scelti tramite nei frame non c’era

certo Giuseppe infatti l’avevo anche specificato

sarebbe la precedente foto (quella Dx) dove sottolineavo l’impostazione del piano tramite i 3 punti

si Emilio, questo metodo l’ho usato tempo fa sia tramite Rh-Script che Gh solo che adesso sto evitando di utilizzare queste soluzioni geometriche, anche perché come avevo accennato trovandomi con una curva chiusa tipo foto sopra Sx il BBox non mi troverebbe tutti i punti necessari

come dicevo al momento osservando la foto a Dx (geometrie inclinate) le ruoto portandole parallele asse X mi trovo i punti Quad col codice esposto nel compopnente Python e riporto tutto all’inclinazione di prima
sono due passaggi, se dovessi fare il BBox dovrei anche suddividere le curve diventa tutto più contorto

ho applicato lo stesso metodo con il settaggio del piano come foto precedente
peccato che questa volta sembra trovare soltanto tre punti e non quattro come dovrebbe essere
(questa non l’ho capita qualcosa mi sfugge?)

ps Emilio per i link dei metodi che abbiamo postati mi servirebbe un aiuto io non li capisco :blush:

Dici i due link che ho postato sopra ?

Uno rimanda alla documentazione del metodo RhinoCommon e l’altro a quella della funzione rhinoscriptsyntax relativi a CurveDeviation.
Forse non funzionano i link ? :slight_smile:

Se non usi RhinoCommon lascia perdere il primo.

Il secondo e’ la solita documentazione rhinoscriptsyntax che conosci anche tu.
Riporto qui sotto quello che vedo io cliccando sul link:

e’ il CurveDeviation di cui parlava Sergio.

Tutto chiaro ? :slight_smile:

Salvio: lo sai che così non annamo da nessuna parte… :laughing:
Ho risposto alla prima domanda… errore da principiante :joy: :joy: :joy:

2 Mi Piace

Emilio questo l’ho capito che è stato trovato il metodo del comando deviazione:

nella foto ho usato proprio il comando Deviazione da Rhino ma questo risultato non me l’aspettavo

contemporaneamente in python ho usato il metodo GetDistance2Crv che mi ritrova gli stessi punti più 1

in effetti il comando deviazione l’ho sempre usato quando modificavo una curva
quindi andavo a verificare le differenze distanze tra l’originale e quella modificata
(forse in questo caso tra una curva chiusa e una retta come nella foto il risultato è sfalsato)

Giuseppe mi sa che hai proprio ragione :smiley:

chissà forse è meglio resettare il tutto perché inizio a non capirci più nulla :sweat_smile: :sweat_smile:

edit:

dev.gh (6,1 KB) posto il file e anche un video:

in pratica il ragionamento fatto inizialmente dovrebbe essere giusta la soluzione della def postata
ma come si vede nel video in questo caso il punto trovato in Rhino, nel metodo in Python non si trova

chissà se anche in questo caso è collegato a questa discussione:

ps mi potreste far sapere nel caso se a voi la def funziona bene ricavando tutti è 4 punti. . . .