ich die Frage oben erwähnt wurde die Lösung bekam aber zu verwirrt mit der Mathematik Gleichungen und Variablen. Ich versuchte zunächst, Koordinaten von zwei anderen Punkten zu finden, aber die Gleichungen konnten von mir nicht gelöst werden, da waren viele Variablen und ich war verwirrt. Wenn das abgeschlossen wäre, hätte ich versucht, die Position des Punktes in Bezug auf die Seiten zu überprüfen, aber das würde auch viele Variablen und Verwirrung beinhalten. Ein guter Algorithmus könnte nur hilfreich sein. Danke!Wie schreibe ich ein C-Programm zu überprüfen, ob ein Punkt innerhalb eines Quadrats gegeben Endpunkte einer seiner Diagonalen liegt
Antwort
Sie können zwei weitere Punkte von Platz finden:
x1 = ? ; y1 = ? ; // First diagonal point
x2 = ? ; y2 = ? ; // Second diagonal point
xc = (x1 + x2)/2 ; yc = (y1 + y2)/2 ; // Center point
xd = (x1 - x2)/2 ; yd = (y1 - y2)/2 ; // Half-diagonal
x3 = xc - yd ; y3 = yc + xd; // Third corner
x4 = xc + yd ; y4 = yc - xd; // Fourth corner
Nach vier Punkte von Platz haben, können Sie überprüfen, ob der angegebene Punkt innerhalb des Quadrats liegt dann die Fläche der vier Dreiecke, wie unten Bild gleich wird der Bereich des Quadrats.
Lesen Sie mehr:
https://martin-thoma.com/how-to-check-if-a-point-is-inside-a-rectangle/
Interessant - der Code "andere zwei Punkte" ist einfacher als ich erwartet hatte. Es ist eine Weile her, seit ich zuletzt die Fläche eines Dreiecks mit den Koordinaten der drei Ecken berechnen musste. Klar ist das aber berechenbar (und dafür gibt es wahrscheinlich auch eine überraschend einfache Formel). –
Lassen Sie uns Eckpunkte A und B und der Punkt P (zufällig dem Namen C auf dem Bild). Finden Vektoren AB, AP, BP
AB.X = B.X - A.X
AB.Y = B.Y - A.Y
and so on
P innerhalb des Quadrats liegt, wenn Skalarprodukte nicht negative
cA = AP x AB //(AP.X * AB.Y - AP.Y * AB.X)
dA = AP dot AB //(AP.X * AB.X + AP.Y * AB.Y)
cB = -(AB x BP)
dB = -(AB dot BP)
und absolute Wert der Quer Produkte sind weniger als Skalarprodukte
dA >= Abs(cA)
dB >= Abs(cB)
(dies entspricht der Überprüfung, ob die Winkel liegen Bereich -Pi/4..Pi/4
)
Lassen Sie Ihr Problem annehmen, ist 2D (wie in 3D oder N-D Sie weitere Informationen benötigen).Ich würde es so lösen:
finden 2 fehlt Scheiteln
wir
A,B
und wollen also wissen dieC,D
:M = (A+B)/2 v1 = B-M
v2
erhalten wir Ausnutzen Tatsache, dass in 2D Vektoren(x,y)
und(y,-x)
senkrecht sind und die gleiche Größe so:v2 = (v1y,-v2x)
Der Rest ist einfach:
C = M - v2 D = M + v2
compute 2 Kante Basisvektoren
U = C-A V = D-A
Verwendung Skalarprodukt innerhalb Bereich überprüfen
dot(I,J) = (I.J) = (Ix*Jx) + (Iy*Jy)
Bietet die senkrechte Projektion von
I
inJ
(wenn beide Vektoren sind Einheit) oder umgekehrt, so dass wir es ausnutzen um festzustellen, ob der PunktP
im Quadrat ist:W = P-A tu = (U.W)/(|U|*|W|) tv = (V.W)/(|V|*|W|) if ((tu>=0.0)&&(tu<=1.0)&&(tv>=0.0)&&(tv<=1.0)) return inside; else return outside;
Nur vollständige abs Wert des Vektors werden wird wie folgt berechnet:
abs(I) = |I| = sqrt (Ix*Ix + Iy*Iy)
- 1. Wie finde ich heraus, ob ein Punkt innerhalb eines Quadrats oder nicht in Java liegt?
- 2. Identifizieren, ob ein Punkt innerhalb eines Polygons liegt?
- 3. Leinwand - Wie finde ich heraus, ob ein Punkt über oder unter einer diagonalen Linie liegt?
- 4. Wie überprüft man, ob ein NSPoint innerhalb eines NSRect liegt
- 5. So ermitteln Sie, ob ein Punkt innerhalb eines kml oder einer Form liegt
- 6. Best Practice, um zu erkennen, ob ein Punkt innerhalb eines 2D Polygons liegt (Scheitelpunkte eines Polygons liegen auf einer Tabelle)
- 7. Prüfen Sie, ob ein Punkt effizient innerhalb eines achseausgerichteten Rechtecks liegt, einschließlich der Kante?
- 8. Kann überprüft werden, ob ein Punkt innerhalb eines Polygons von Geojson liegt?
- 9. Prüfen, ob ein Punkt (x0, y0, z0) innerhalb eines Tetraeders liegt in Matlab
- 10. 2D-Geometrie: Wie überprüfen, ob sich ein Punkt innerhalb eines Winkels ist
- 11. Prüfen, ob Zeiger innerhalb eines Arrays liegt
- 12. Ermitteln, ob ein Punkt innerhalb eines Dreiecks aus 3 Punkten mit gegebenem Breiten-/Längengrad liegt
- 13. überprüfen, ob Punkt liegt innerhalb einer Route Weg zwischen zwei Orten
- 14. Wie konstruiere ich eine if else-Anweisung, um zu überprüfen, ob ein Combobox-Wert innerhalb eines bestimmten Bereichs liegt
- 15. prüft wird, ob ein Punkt innerhalb eines Polygons ist
- 16. Was ist der schnellste Weg zu überprüfen, ob ein Punkt innerhalb eines Polygons in Python ist
- 17. Ermitteln, ob ein 2D-Punkt innerhalb eines Vierecks ist
- 18. Wie zu überprüfen, ob ein Formular ein Pflichtfeld hat auf einer seiner Kontrolle
- 19. PHP Überprüfen, ob das Datum innerhalb einer bestimmten Stunde liegt
- 20. Ermitteln, ob ein Punkt in einem Matplotlib-Subplot liegt
- 21. So finden Sie, ob ein GeoCoordinate Punkt innerhalb der Grenzen liegt
- 22. Finden, ob ein Punkt innerhalb eines Dreiecks ist
- 23. Wie suche ich, wenn ein Wert innerhalb eines mehrdimensionalen Arrays in PHP in einem Bereich liegt?
- 24. Wie überprüfe ich, ob ein Punkt auf einer Linie zwischen zwei anderen Punkten liegt?
- 25. Ermitteln, ob der Punkt innerhalb der Bounding Box liegt
- 26. Wie kann ich testen, ob ein Wert innerhalb eines Bereichs liegt?
- 27. Bestimmen Sie, ob ein Punkt innerhalb einer Broschüre Polygon befinden
- 28. Wie schreibe ich eine Abfrage, um zu überprüfen, ob ein Kind Kinder in einer Tabelle hat
- 29. Wie finde ich einen Punkt innerhalb eines Polygons mit Racket
- 30. Überprüfen Sie, ob ein String innerhalb Absätze eines div jquery
Bitte einige Zeit [die Hilfeseiten] lesen nehmen (http://stackoverflow.com/help), insbesondere die Abschnitte genannt [ "Welche Themen kann ich hier fragen?"] (Http://stackoverflow.com/help/on-topic) und ["Welche Arten von Fragen sollte ich vermeiden zu fragen?"] (Http://stackoverflow.com/help/nicht fragen). Auch bitte [nehmen Sie die Tour] (http://stackoverflow.com/tour) und [lesen Sie, wie man gute Fragen stellt] (http://stackoverflow.com/help/how-to-ask). Zuletzt erfahren Sie, wie Sie ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) erstellen können. –
Sie brauchen hier nicht wirklich viel Mathematik. Zeichnen Sie das Quadrat und beobachten Sie, was mit den X- und Y-Koordinaten des Punktes geschieht, wenn Sie ihn in das Quadrat hinein und aus ihm heraus bewegen. Vergleichen Sie die X- und Y-Koordinaten des Punktes mit den X- und Y-Koordinaten der beiden Punkte auf der Diagonale. –
Sie sollten die Beispieldaten mindestens anzeigen. Wenn die Punkte (0,0) und (3,3) zum Beispiel oder (2,5) und (4,7) sind, ist alles sehr geradlinig, weil die Seiten des Quadrats parallel zu den Achsen sind. Wenn die Punkte (0,0) und (3,6) sind, brauchen Sie viel mehr Mathematik, um die Antwort zu berechnen, weil das Quadrat schräg ist. Sie sollten auch zeigen, dass Sie genug Mathematik studiert haben, um zu wissen, wie Sie die Berechnungen durchführen. Wenn nicht, dann müssen Sie diesen Teil Ihres Problems beheben, bevor Sie Hilfe mit Code erhalten. Wenn Sie die betreffende Mathematik kennen, können Sie mit dem Codieren einer Lösung beginnen. –