AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Gedrehter Gradient im Rechteck
Thema durchsuchen
Ansicht
Themen-Optionen

Gedrehter Gradient im Rechteck

Ein Thema von Medium · begonnen am 13. Dez 2015 · letzter Beitrag vom 14. Dez 2015
Antwort Antwort
Namenloser

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

AW: Gedrehter Gradient im Rechteck

  Alt 13. Dez 2015, 10:18
Hier noch mal als Skizze.
Angehängte Grafiken
Dateityp: png winkel.png (70,2 KB, 27x aufgerufen)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Gedrehter Gradient im Rechteck

  Alt 13. Dez 2015, 16:56
Ok, so weit so gut. Ich habe jetzt einfach mal naiv den Schnitt gebildet:

S: Vektor (sin(φ) cos(φ))
K: Gerade durch C im Winkel φ
K': Senkrechter Vektor zu K (-Ky Kx)
N: Gerade durch E0, senkrecht zu K

Code:
    /sin(phi)\
S = |        |,
    \cos(phi)/


K = C - aS,

     /-Cy + a*cos(phi)\
K' = |                |,
     \ Cx - a*sin(phi)/

N = E0 + bK'

Ziel: N = K
(Das φ kennt die Code-Box leider nicht )

Ich habe das mal ausmultipliziert und nach b gelöst, und dies eingesetzt um nach a auflösen zu können. Aber irgend etwas passt da gewaltig nicht. Ich komme auf eine quadratische Gleichung für a, also 2 Lösungen! Das dürfte beim Schnitt von 2 Gerade doch überhaupt nicht sein. (Und der Term ist ein höllischer Rattenschwanz.)
Dazu kommt, dass "-Cy + a*cos(φ)" nicht 0 werden darf, und ich für den Fall auch noch die komplett anders herum aufgebaute Lösung brauche. (sin(φ)+cos(φ) darf auch nicht 0 werden, aber das sollte es ja nie.)

Ich befürchte hier grobe Denkfehler, die ich in 2 dicht beschriebenen DIN A4 Seiten mit Monster-Termen nicht mehr finde. Die Lösung muss vom Gefühl her viel einfacher sein.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Namenloser

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

AW: Gedrehter Gradient im Rechteck

  Alt 13. Dez 2015, 22:02
Eigentlich sollte der Schnittpunkt sich leicht finden lassen, indem du den Punkt C ganz einfach auf die Senkrechte projizierst. Die Lösung müsste dann P = E + (cos φ, sin φ)*(C-E) sein.

Ich muss aber zugeben, ich habe auch erst ein paar Minuten lang sinnlos Variablen auf dem Papier hin- und hergeschoben, bis ich darauf gekommen bin. Hoffe, das stimmt jetzt auch. Aber müsste es eigentlich.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: Gedrehter Gradient im Rechteck

  Alt 13. Dez 2015, 23:01
Ich hab das mal exemplarisch angewendet.

Gegeben ist ein Rechteck mit der oberen linken Ecke E bei (10,10) und einer Breite von 100 und Höhe von 30. Der Mittelpunkt C liegt dann bei (60,25).

Für φ = 0° ergibt sich korrekt der Punkt P=(60,10)
Für φ = 90° ergibt sich korrekt der Punkt P=(10,25)
Für φ = 45° ergibt sich falsch der Punkt P=(45.35,20.605) (Es sollte (10,10) sein)

Da schleicht sich auch wieder dieser blöde Faktor von Sqrt(2)/2 ein, da Sin(45°) ~= 0.707 = Sqrt(2)/2.

Die Menge der Punkte P müssten - wenn ich mir das richtig vorstelle - in etwa so wie im Anhang aussehen (rote Kurven). Die Frage ist dann aber, welche Formel gibt diese vor, bzw. sind das echt Halbkreise/-ellipsen, und wenn ja mit welchen radii?
Angehängte Grafiken
Dateityp: png curves.png (12,2 KB, 1x aufgerufen)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (14. Dez 2015 um 01:10 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Gedrehter Gradient im Rechteck

  Alt 14. Dez 2015, 02:26
Ich hab's! Bloß nicht auf die Uhr gucken, morgen wird grausig. Aber das musste gelöst werden.

Ich hatte bei meinen Umformungen den super dämlichen Fehler gemacht, die Senkrechte der Geraden K zu bilden, aber das durfte natürlich nur ihr Richtungsvektor S sein! Autsch. Dadurch fällt auch das Quadrat in meinen Umformungen weg, und es gibt am Ende nichtmals mehr DivBy0-Fallen.
Der einzige kleine Vermutstropfen: Ich muss anhand des Winkels entscheiden, welchen Eckpunkt ich nun für die Rechnung her nehme. Okay, eine lästige Fallunterscheidung, aber dafür klappt es!

Der unschuldig aussende Term: (Statt sin(φ) und cos(φ) schreibe ich mal nur und sin und cos.)
Code:
    /sin\
S = |   |
    \cos/

P0 = C - a*S
P1 = C + a*S

E := Eckpunkt, in dessen grobe Richtung eine Gerade im Winkel phi vom Punkt C aus zeigt
    (Man bildet quasi Quadranten um C)

a = Cx*sin - Ex*sin + Cy*cos - Ey*cos
Danke euch nochmals!!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: Gedrehter Gradient im Rechteck

  Alt 14. Dez 2015, 02:31
EDIT: Jetzt hab ichs geschrieben, jetzt poste ich es noch

Du hast deine Gerade K = C - a*S. Wenn du du die Eckpunkte auf die Gerade projizierst, erhältst du Punkte auf der Gerade. Die beiden "äußeren" (minimales/maximales a) sollten die Punkte sein die du suchst.

squares.png
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Gedrehter Gradient im Rechteck

  Alt 14. Dez 2015, 02:48
Ups, auch so ein Nachtschwärmer hm? Genau das verbirgt sich hinter meinen wilden Formeln jetzt. Danke dir trotzdem!

Im Anhang ein Bild davon, wie die Punkte P tatsächlich liegen. Meine Annahme von oben traf nicht ganz zu, aber Kreise sind es trotzdem - 4 davon sogar
(Und wenn man es sieht, erscheint es auch wundervoll logisch dass das so gehen muss.)
Angehängte Grafiken
Dateityp: png curves.png (17,9 KB, 20x aufgerufen)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 17:13 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