AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Dreieck skalieren (verkleinern)
Thema durchsuchen
Ansicht
Themen-Optionen

Dreieck skalieren (verkleinern)

Ein Thema von Neutral General · begonnen am 14. Aug 2008 · letzter Beitrag vom 16. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Dreieck skalieren (verkleinern)

  Alt 14. Aug 2008, 20:38
Hi,

Ich habe 3 Punkte gegeben. A,B,C, die ich mit Canvas.MoveTo/LineTo verbinde.
Wie muss man jetzt die Koordinaten anpassen um das Dreieck um x Pixel zu vergrößern/verkleinern.

Hab schon nachgedacht, aber ich scheine irgendwie aufm Schlauch zu stehn.... Oder es ist tatsächlich nicht so einfach.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Dreieck skalieren (verkleinern)

  Alt 14. Aug 2008, 20:40
Also a musst du doch einen nach unten und einen nach links verschieben. b musst du einfach nur einen nach oben verschieben und c einen nach unten und einen nach rechts. Also links = a, Oben 0 b und c = rechts. Also z.B. b - 1;
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Dreieck skalieren (verkleinern)

  Alt 14. Aug 2008, 20:42
Ich würde es mit einer Verhältnisgleichung lösen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Dreieck skalieren (verkleinern)

  Alt 14. Aug 2008, 20:44
Ich würde in ein Koordinatensystem transformieren, in dem das Streckzentrum im Ursprung liegt. Dann kannst du alle Koordinaten mit dem Streckfaktor skalieren und zurücktransformieren.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Dreieck skalieren (verkleinern)

  Alt 14. Aug 2008, 20:47
Zitat von Larsi:
Also a musst du doch einen nach unten und einen nach links verschieben. b musst du einfach nur einen nach oben verschieben und c einen nach unten und einen nach rechts. Also links = a, Oben 0 b und c = rechts. Also z.B. b - 1;
Nein, dadurch verändert sich die Form des Dreiecks.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Dreieck skalieren (verkleinern)

  Alt 14. Aug 2008, 21:06
Zitat von SirThornberry:
Ich würde es mit einer Verhältnisgleichung lösen.
Das geht aber nur, wenn es im Ursprung leigt, ansonsten verschibt es sich

Also (wie Apollonarias gesagt hat) musst du zuerst ein Zentrum finden. Das kann der Schnittpunkt der Seitenhalbierenden sein, der der Winkelhalbierebnden oder so.
Dann (die Punkte liegen hoffentlich in vektoriell vor) von jedem Punkt die Koordinaten des Mitelpunkts abziehen. Dann hast du den Mittelpunkt im Ursprung.
Dann kannst du deine Punkte mit einem beliebigen Faktor skalieren, und auf die neuen Koordinaten wieder die des Mitelpunkts hinzuaddieren.

Wenn es schnell gehen muss, kannst du auch den Mittelwert der drei x-Koordinaten und den Mittelwert deer drei y-Koordinaten als Mittelpunkt nehmen.
Von der Wahl des Mittelpunkts hängt es ab, wie dol es in welche Richtung wächst
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Dreieck skalieren (verkleinern)

  Alt 14. Aug 2008, 23:33
war wohl doch keine gute Idee...
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#8

Re: Dreieck skalieren (verkleinern)

  Alt 15. Aug 2008, 09:15
Moin, Moin.

Mir ist unklar, was du mit
Zitat:
um das Dreieck um x Pixel zu vergrößern/verkleinern
meinst!
Soll das Dreieck prozentual vergrößert werden? Sollen die Seitenlinien länger werden? Oder wie ist das gemeint?
Ralph
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Dreieck skalieren (verkleinern)

  Alt 15. Aug 2008, 10:06
- Mittelpunkt des Dreiecks bestimmen
- mit dem Faktor der Vergrößerung den neuen Abstand zum Mittelpunkt für jede Ecke bestimmen


Edit: Dieses Verfahren klappt nicht nur für Dreiecke, sondern für alle n-Ecke
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Dreieck skalieren (verkleinern)

  Alt 15. Aug 2008, 10:11
Also ein Dreieck wird ganz einfach skalliert :
Delphi-Quellcode:

Procedure Scale3eck(var p1,p2,p3:Tpoint;Prozent:Double);
var mx,my:Double;
    dx,dy:Double;
begin
  // erst mal den Mittelpunkt berechnen
  mx := ( p1.x + p2.x +p3.x)/3;
  my := ( p1.y + p2.y +p3.y)/3;
  // Mit Hilfe des Mittelpunktes kann man die Translation in den Ursprung machen
  dx := (p1.x - mx);
  dy := (p1.y - my);
  p1.x := round( dx * Prozent + mx)
  p1.y := round( dy * Prozent + my)

  dx := (p2.x - mx);
  dy := (p2.y - my);
  p2.x := round( dx * Prozent + mx)
  p2.y := round( dy * Prozent + my)

  dx := (p3.x - mx);
  dy := (p3.y - my);
  p3.x := round( dx * Prozent + mx)
  p3.y := round( dy * Prozent + my)

end;
Edit : Ah Tyrael Y. war doch schneller, aber mein Algo macht genau das selbe wie er beschrieben hat.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:23 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