Sto cercando di trovare un modo per estendere un segmento di linea di una distanza specifica. Per esempio se ho un segmento di linea che inizia con 10,10 che si estende a 20,13 e voglio estendere la lunghezza di 3 come faccio a calcolare il nuovo endpoint. Posso ottenere la lunghezza di sqrt (a^2 + b^2) in questo esempio 10.44, quindi se volessi sapere il nuovo endpoint da 10,10 con una lunghezza di 13,44 quale sarebbe il più veloce dal punto di vista computazionale? Conosco anche la pendenza, ma non so se questo mi aiuti in questo caso.Estensione di un segmento di linea a una distanza specifica
risposta
È possibile farlo trovando il vettore unitario del segmento di linea e ridimensionarlo alla lunghezza desiderata, quindi tradurre il punto finale del segmento di linea con questo vettore. Supponiamo che i punti finali del segmento di linea siano A
e B
e che si desideri estendere dopo il punto finale B
(e lenAB
è la lunghezza del segmento di linea).
#include <math.h> // Needed for pow and sqrt.
struct Point
{
double x;
double y;
}
...
struct Point A, B, C;
double lenAB;
...
lenAB = sqrt(pow(A.x - B.x, 2.0) + pow(A.y - B.y, 2.0));
C.x = B.x + (B.x - A.x)/lenAB * length;
C.y = B.y + (B.y - A.y)/lenAB * length;
Se hai già la pendenza è possibile calcolare il nuovo punto:
x = old_x + length * cos(alpha);
y = old_y + length * sin(alpha);
non ho fatto questo in un po 'in modo da prendere con un grano di sale.
dove alfa = atan2 (y-old_y, x-old_x) –
Grazie per il vostro aiuto, questa soluzione sembra un po 'più lenta della soluzione inferiore. Apprezzo l'aiuto, anche questo ha funzionato. – goodgulf
Ho appena inciampato su questo dopo una ricerca di questo me stesso, e per darvi una soluzione out-of-the-box, si può avere uno sguardo al codice all'interno di una classe Vector standard (in qualsiasi lingua) e ciliegina scegliere quali parti hai bisogno, ma ho finito per usarne uno e il codice assomiglia a questo:
vector.set(x,y);
vector.normalize();
vector.multiply(10000);// scale it by the amount that you want
Buona fortuna!
Penso che questa sia la risposta più elegante –
- 1. linea di inserimento sed con spazi a una linea specifica
- 2. Intersezione Linea e Segmento Linea
- 3. Distanza minima tra due segmenti di linea
- 4. Perpendicolare su un segmento di linea da un determinato punto
- 5. Distanza segmento inter utilizzando numba jit, Python
- 6. Come verificare se il segmento di linea interseca un rettangolo?
- 7. Trovare un punto su una linea
- 8. Eliminare una linea specifica in un file di testo?
- 9. Sed per eliminare un intervallo di linee da una specifica linea di partita FINO a una specifica linea di corrispondenza (esclusa la riga precedente)
- 10. Geometria: trova punto una distanza specifica tra due punti
- 11. Scorrimento di una vista testo su una linea specifica
- 12. Calcola la distanza dalla linea smussata
- 13. Come si trova un punto a una determinata distanza perpendicolare da una linea?
- 14. Avendo scss-lint ignora una linea specifica
- 15. Disattivazione un'avvertenza specifica in una linea specifica in Xcode
- 16. Segmenti segmento di movimento
- 17. ggplot linea spessa specifica
- 18. Inserimento di righe in un file a partire da una linea specifica
- 19. Come fare riferimento a una linea specifica o un intervallo di linee in github?
- 20. Come appianare il segmento di linea WPF del percorso figura
- 21. Scrivere un commento in Eclipse collegando una linea specifica
- 22. Trova tutti i vicini più vicini entro una distanza specifica
- 23. Riferimento a un segmento parziale di un vettore?
- 24. Controllare se un punto proiettato su un segmento di linea non è fuori di essa
- 25. Dato un punto di inizio e di fine, e una distanza, calcolare un punto lungo una linea
- 26. Regex abbinare una linea senza una specifica parola
- 27. Calcola "in linea d'aria" distanza php
- 28. Akka l'invio di una chiusura con l'attore a distanza
- 29. Come si calcola il vettore normale di un segmento di linea?
- 30. Come posso sostituire una linea specifica per numero di riga in un file di testo?
Questa non è una domanda di programmazione, ma una semplice matematica, che devi quindi espandere al tuo codice. – Constantinius
@Constantinius È ancora una domanda sull'algoritmo, solo una basata sulla matematica (su cui l'informatica è estremamente pesante). – corsiKa
@glowcoder: non sono d'accordo. Senza capire la matematica sottostante, non c'è dubbio che fallisca nel suo compito. D'altra parte, se ha familiarità con la matematica, è un compito banale tradurlo in codice di programma. – Constantinius