AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Geometrie

Ein Thema von bender123 · begonnen am 4. Dez 2004 · letzter Beitrag vom 14. Mai 2006
Antwort Antwort
bender123

Registriert seit: 21. Nov 2004
3 Beiträge
 
#1

Geometrie

  Alt 4. Dez 2004, 08:54
Hallo!
Ich will aus Koordinaten für 3 Punkte ein Dreieck konstruieren und darum einen Kreis legen, der alle Eckpunkte berührt.
Für den Mittelpunkt des Kreises brauche ich den Schnittpunkt der Mittelsenkrechten zu den drei Seiten. Wie ermittel ich diesen für den allgemeinen Fall (beliebiges Dreieck)?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Geometrie

  Alt 4. Dez 2004, 09:01
Wenn mich nicht alles täuscht, dann gilt das sowieso nur für ein gleichseitiges Dreieck. Bei jedem anderen Dreieck schneiden sich die Mittelsenkrechten nicht in einem Punkt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Geometrie

  Alt 4. Dez 2004, 09:05
Stell doch für zwei Mittelsenkrechten Gleichungen auf und schneide die. Mit ein bischen Vektorrechnung wirst du das auch recht einfach implementieren können.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Geometrie

  Alt 4. Dez 2004, 09:42
Mathematisch gesehen kannst Du mit drei Punkten eine Elipse beschreiben, nicht jedoch einen Kreis.
Bei einem Kreis müsste gelten dass jeder Punkt vom Mittelpunkt aus die gleiche Entfernung hat und das
trifft nur bei Sonderfällen zu. Wenn jedoch alle Möglichkeiten mit einbezogen werden sollen, dann wird
das Problem ganz schön komplex... aber noch nicht unmöglich!
Du musst eine Formel aufstellen, die in abhängigkeit vom radius prüft ob alle 3 Punkte im Kreis liegen.
Zusätzlich müsstest Du das Dreieck in dem Kreis noch bewegen...

Falls Du ne Lösung hinbekommst würde ich die gerne mal sehen...
Viel Erfolg
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Geometrie

  Alt 4. Dez 2004, 10:09
in der freien Enzyklopädie Wikipedia steht folgendes:
Umkreis
aus Wikipedia, der freien Enzyklopädie
In der Geometrie ist ein Umkreis ein Kreis, der durch alle Eckpunkte eines Vielecks (Polygon) geht.

Nicht jedes Polygon hat einen Umkreis. So hat zwar jedes Dreieck einen Umkreis, ein allgemeines Viereck hat jedoch keinen mehr. Vierecke, die einen Umkreis besitzen, werden Sehnenvierecke genannt. Spezialfälle sind das gleichschenklige Trapez, das Rechteck und das Quadrat.

Der Umkreismittelpunkt eines Dreiecks ist der Schnittpunkt der Mittelsenkrechten der drei Seiten.

Hat ein konvexes Vieleck einen Umkreis, dann schneiden sich alle Mittelsenkrechten seiner Seiten in einem Punkt, dem Umkreismittelpunkt. Umgekehrt gilt: Wenn sich alle Mittelsenkrechten eines konvexen Vielecks in einem Punkt schneiden, dann hat das Vieleck einen Umkreis.

Weitet man die Definition des Umkreises auf den Raum aus, so erhält man eine Umkugel, auf der alle Eckpunkte eines Polyeders liegen.

Siehe auch: Inkreis, Kreise am Dreieck


Zitat von atreju2oo0:
Mathematisch gesehen kannst Du mit drei Punkten eine Elipse beschreiben, nicht jedoch einen Kreis
Überleg doch mal.
Du kannst garantiert einen Kreis zeichnen, auf dem 2 bestimmte Punkte liegen. Den Duchmesser dieses Kreises muss dann zwischen der entfernung der beiden Punkte und (nahezu) Unendlich schwanken. Damit bekommst du den dritten Punkt in jedem Fall mit auf den Kreis, sofern die Punkte ein Dreick darstellen, und somit nicht auf einer Linie liegen.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Geometrie

  Alt 4. Dez 2004, 11:01
Zitat:
Damit bekommst du den dritten Punkt in jedem Fall mit auf den Kreis, sofern die Punkte ein Dreick darstellen, und somit nicht auf einer Linie liegen.
Eine Gerade kannst du aber auch als einen entarteten Kreis mit unendlichem Durchmesser ansehen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Geometrie

  Alt 4. Dez 2004, 11:43
Zitat von Luckie:
Wenn mich nicht alles täuscht, dann gilt das sowieso nur für ein gleichseitiges Dreieck. Bei jedem anderen Dreieck schneiden sich die Mittelsenkrechten nicht in einem Punkt.
Das glaub ich aber nicht. Was du vielleicht meinst, ist daß der Mittelpunkt des Dreiecks auch der Mittelpunkt des Kreises ist. Da magst du Recht haben. Aber wenn dir 3 Punkte gegeben sind, solltest du immer einen Kreis finden, wo diese 3 Punkte drauf liegen... Ich hab mal im Anhang schnell ein belieges Dreieck gezeichnet und anschliessend einen Kreis drum gelegt.
Miniaturansicht angehängter Grafiken
bsp_195.gif  
  Mit Zitat antworten Zitat
Tylerxxx

Registriert seit: 16. Dez 2004
Ort: Herford
3 Beiträge
 
#8

Re: Geometrie

  Alt 16. Dez 2004, 18:11
ne ich glaub eher er meint, dass Das dreieck aussen liegt und der kreis im dreick, quasi ein dreieck welches einen kreis umschliesst! und die drei koordinaten sind die kordinaten von den drei eckpunkten des Dreiecks!

die aufgabe ist nun den kreis so ins dreieck zu setzen das er nicht die drei seiten des dreieck überschreitet( quasi nur tnagiert) !

habe fast dieselbe aufgabe bekommen und bin auch schon am grübeln!

mfg Tyler
  Mit Zitat antworten Zitat
track

Registriert seit: 30. Okt 2005
25 Beiträge
 
#9

Re: Geometrie

  Alt 14. Mai 2006, 17:28
hab 3 Punkte, muss jetzt feststellen, ob die einen Dreieck bilden oder eifach auf einer Gerade liegen
hab mir auch überlegt, ob es nicht mit hilfe von Vektorrechnung das problem bewältigt werden kann und zwar:

cos Alpha = A*B/(|A|*|B|)
A*B = a1*b1+a2*b2*+....+aN*bN
|A| = sqrt(sqr(a1)+sqr(a2)+...)
genauso mit |B| und wenn die cos Alpha = 0 dann ist es auf einer gerade.

Delphi-Quellcode:
function DrawDreieck(Figur:TFigur) : boolean;
var VektA_VektB : real; //A*B
    LaengeVA, //laenge des vektors A
    LaengeVB : real; //laenge des vektors A
    x1,x2, //die einzelnen laengen
    y1,y2 : longint;
    Ecke : real; //ergebnis
begin
  x1 := Figur.Dreieck_Daten[1].X - Figur.Dreieck_Daten[2].X;
  y1 := Figur.Dreieck_Daten[1].Y - Figur.Dreieck_Daten[2].Y;
  x2 := Figur.Dreieck_Daten[3].X - Figur.Dreieck_Daten[2].X;
  y2 := Figur.Dreieck_Daten[3].Y - Figur.Dreieck_Daten[2].Y;
  LaengeVA := sqrt(sqr(x1) + sqr(y1)); // <--------
  LaengeVB := sqrt(sqr(x2) + sqr(y2));
  VektA_VektB := x1 * x2 + y1 *y2;
  Ecke := arccos(VektA_VektB / (LaengeVA * LaengeVB));
  if Ecke <> 0 then DrawDreieck := true;
end;

Problem ist in der Zeile mit Pfeil. gibt n Fehler "integerüberlauf" aus
was kann man da tun?

als zugabe - Typen definitionen:
Delphi-Quellcode:
type

  TRechteck = record
                P1 , // Eckpunkte des Rechtecks
                P2 : TPoint;
              end;
              
  TKreis = record
             Aussenpunkt : TPoint; // Eckpunkt des "Quadrats" in das
             Durchmesser : integer; // der Kreis gezeichnet wird
           end; // die Kantenlänge dieses Quadrates

  TDreieck = array[1..3] of TPoint; // Drei Eckpunkte des Dreiecks

  TFigurentyp = (Rechteck,Kreis,Dreieck);
  TFigur = record // Varianter Record
             pen : TColor;
             brush : TColor;
             case Figurentyp : TFigurentyp of
               Rechteck : (Rechteck_Daten : TRechteck);
               Kreis : (Kreis_Daten : TKreis);
               Dreieck : (Dreieck_Daten : TDreieck);
           end;
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Geometrie

  Alt 14. Mai 2006, 17:30
Du kannst doch die Abstände der Punkte AB, AC, BC berechenen (tust du ja schon)
und wenn jetzt die Summe der beiden kleineren gleich dem größten Abstand ist, dann liegen sie auf einer geraden.
Kann es sein, dass sqr(a1)+sqr(a3) zu groß wird, und dann die Wurzel aus was negativem gezogen werden soll?
Benjamin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz