![]() |
Beliebigen Punkt in einem Viereck berechnen
Hallo,
ich habe die vier Eckpunkte gegeben. Wie kann ich nun daraus einen beliebigen Punkt im Viereck berechnen? Viele Grüße |
Re: Beliebigen Punkt in einem Viereck berechnen
willst du wissen ob ein bestimmter punkt drin liegt, oder willste einfach einen punkte auch einer kante brechnen!?
Im prinzip beides sehr einfach! |
Re: Beliebigen Punkt in einem Viereck berechnen
.. willst Du feststellen ob der Punkt im Viereck liegt.
Bedingung dafür ist:
Code:
Für die Y Achse ist es ähnlich.
(Punkt.x > Viereck.left) and (Punkt.x < (Viereck.left + Viereck.width))
Grüße Klaus |
Re: Beliebigen Punkt in einem Viereck berechnen
Also meine erste Frage wäre ja gewesen, ob es ein allgemeines Viereck, ein Parallelogramm, ein Rechteck oder ein Quadrat ist ...
Ich glaube meine beiden Vorposter haben angenommen dass es sich zumindest um ein Rechteck handelt - dieser Fall wäre in der Tat sehr einfach. Für ein allgeimenes Viereck ist das schon schwieriger ;) |
Re: Beliebigen Punkt in einem Viereck berechnen
Zitat:
|
Re: Beliebigen Punkt in einem Viereck berechnen
Es ist ein allgemeines (konvexes?) Viereck. Mir recht es nicht, ob ein Punkt sich in diesen Viereck befindet. Ich muss stattdessen die Koordinate des Punktes ermitteln. Ich dachte erst an eine Art der Verhältnisgleichung, aber ich bin mir nicht sicher, ob ich damit zum Ziel komme.
Ich habe für alle vier Eckpunkte die Koordinaten (x/y). Nur mal als Beispiel:
Delphi-Quellcode:
(der Punkt ist nur dazu da, die Formatierung zu erhalten)
. --------b
a------ | | | | z | | | | | | | | | c-----------d a: x=0; y=7 b: x=15; y=8 c: x=2; y=0 d: x=14; y=0 Wie komm ich an die Koordinaten von z? |
Re: Beliebigen Punkt in einem Viereck berechnen
Wenn das Viereck konvex ist, liegt der Schwerpunkt, d.h. (a + b + c + d)/4, immer im Inneren des Vierecks.
|
Re: Beliebigen Punkt in einem Viereck berechnen
.. Woher weißt Du denn, das sich ein Punkt im Viereck befindet?
Wie findest Du den Punkt? Welche Koordinaten suchst Du, bezogen auf die Grenzen des Vierecks - oder absolut? Grüße Klaus |
Re: Beliebigen Punkt in einem Viereck berechnen
Zitat:
Zitat:
|
Re: Beliebigen Punkt in einem Viereck berechnen
Wer sprach von zufällig? Im Ausgangspost heißt es nur "beliebig".
|
Re: Beliebigen Punkt in einem Viereck berechnen
Zitat:
|
Re: Beliebigen Punkt in einem Viereck berechnen
Ich glaub ich muss näher am Problem bleiben - hatte versucht, dass etwas allgemeiner nachzufragen, aber das ergibt dann keinen Sinn, da tatsächlich an der Stelle die Koordinaten des Punktes fehlen. So noch mal von vorn.
Das Problem sind die zwei Wertesysteme - x/y und Latitude/Longitude. Ich möchte nun von den Lat/Lon Koordinaten in das x/y Format kommen. Ich bekomme über eine API die Abmessungen des Gebietes heraus. z.B.: x(min) = 0 y(min) = 0 x(max) = 230400 y(max) = 161280 Über die oben angesprochene API kann ich noch für ein beliebigen Punkt (x/y) die Latitude und die Longitude berechnen lassen. Damit kann ich für die vier Eckpunkte der Landschaft (x(min)/y(min); x(max)/y(min); x(min)/y(max); x(max)/y(max)) die entsprechenden Lat/Lon Koordinaten ausrechnen. z.B.: x(min)/y(min): Lon = 16,4931468963623; Lat = 45,5079956054688; x(max)/y(min): Lon = 13,5346508026123; Lat = 45,5083541870117; x(min)/y(max): Lon = 16,5330562591553; Lat = 46,9597282409668; x(max)/y(max): Lon = 13,4954843521118; Lat = 46,9601058959961; (die max/min Bezeichnung stimmen an der Stelle nicht - ist noch im Programm falsch, aber sollte erstmal kein Problem sein) Nun bekomme ich eine beliebige Lat/Lon Koordinate, welche in dem oben definierten Bereich liegt. Diese Koordinate muss ich nun irgendwie in den x/y Wertebereich bekommen. Die API bietet leider diese Art der Umrechnung nicht an, deshalb muss ich das selber berechnen. z.B. Lat: 46,369255065918 und Lon: 14,10085105896 wurden welche x/y Koordinaten ergeben? [EDIT] Ich hatte es erst nach dem Schema versucht: x(aktuell) = (x(max) - x(min)) / (lon(max) - lon(min)) * lon(aktuell) y(aktuell) = (y(max) - y(min)) / (lat(max) - lat(min)) * lat(aktuell) Aber da traten immer leichte Abweichungen auf, da die Rechnung von einen Rechteck ausgeht. |
Re: Beliebigen Punkt in einem Viereck berechnen
also, sowas habe ich in meinem tools auch schonmal gehabt, du musst zuächst folgendes beachten: Das Koordinatensystem befindet sich auch einer Kugel!
deine Latitude Abstände bleiben gleich, 1°= 111km bei der Longitude wirds schwieriger, aber machbar. denn diese ändern sich je nach Latiduekkoridnate. sprich am Äquator haste auch 111km abstand, der mit Zunehmender/abnehmender Latitude kleiner wird. mach dir am besten mal eine Skizze und dann überlge mal wie du das ganze ausrechnen kannst! LG marco! EDIT: das ganze ist praktisch vom Winkel (Longitude) abhängig, da du die die Koordinaten von ner Kugel auf ne Fläche projezierts! |
Re: Beliebigen Punkt in einem Viereck berechnen
Aha ... Ich lese da mal raus, dass es sich um eine Landkarte dreht.
Aber welche Projektionsmethode wird für das ganze verwendet? |
Re: Beliebigen Punkt in einem Viereck berechnen
das ist egal. wenn ers für x,y haben will, muss er das ganze auf ne 2D fläche projezieren, wie eben beschrieben...
|
Re: Beliebigen Punkt in einem Viereck berechnen
Lat/Lon ist WGS84. Das x/y Format ist ein benutzerdefiniertes Format, wo eine Einheit in etwa einen Meter entspricht. Ich hab auch schon die ganzen Lat/Lon in UTM Koordinaten umgerechnet. Da war dann die Abweichung noch geringer, aber eben noch vorhanden. Das Problem ist, dass ich die Koordinaten nicht so einfach ins Verhältnis stellen kann, wie ich es erst gemacht habe.
|
Re: Beliebigen Punkt in einem Viereck berechnen
Liste der Anhänge anzeigen (Anzahl: 2)
So hier schonmal die Skizzen vom Sachverhalt:
Im Bild 1 siehst du den Sachverhalt. Das Probelm ist das die Länge der Strecke parallel zum Äquator bei z.b. der longitude E008 20 17 in Abhängigkeit von der Latitude steht. Am Äquator beträgt der Abstand von E008 zu E009 111km. nach Norden und Süden nimmt er entsprechend ab. Also musst du dir ein Hilfsdreieck erstellen, siehe Skizze 2. damit kannst du die Strecke b auf dem Äquator berechnen um die das Ganze abnimmt. Der Winkel L entspricht deiner Latitude z.b. E008 20 17 Wenn du die Verkürzung ausgerechnet hast musst du einfach 111km * E008 20 17 rechnen, dann hast du die Strecke von 0,0 bis zur longitude E008 20 17 und die Strecke von z.b. N50 20 17/ E008 20 17 beträgt dann 111km * E008 20 17 - die Verkürzung. Somit kannste alle Strecken deines Virecks ausrechnen und dies lassen sich ja nun sehr einfach in Koordinaten umwandeln! Proniers mal aus! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz