Planekvationen???|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Planekvationen???
Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
1
December 16, 2001 - 4:12 pm
sp_Permalink sp_Print

Hur löd den nu igen, och vad stod variablerna för?

var det

0 = ax + by + cz + d

😕

Jerry
Member
Medlem
Forum Posts: 4381
Member Since:
June 18, 2001
sp_UserOfflineSmall Offline
121724
December 16, 2001 - 4:37 pm
sp_Permalink sp_Print

Ekvationen för ett plan i tre dimensioner?

Ja, AX + BY + CZ + D = 0

Där A,B,C o D är konstanter.

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
121732
December 16, 2001 - 4:49 pm
sp_Permalink sp_Print

Jomen abcd är VAD???

Punkterna som definerar planet???

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
121758
December 16, 2001 - 5:22 pm
sp_Permalink sp_Print

For those not familiar with the plane equation, The values A, B, and C are the coordinate values of the normal vector. D can be calculated by substituting a point known to be on the plane for x, y, and z.

Vilket borde innebära att normalen = (A, B, C) och att D är en vektor som ligger på planet, vilket borde innebära att D = (0, 0, 0)...Eftersom A i en pylogon alltid är (0,0,0)..En polygon som har hörnen A, B, C dvs...

Men om det nu vore så, hur skulle då Ax + By + Cz + D = 0???
Ax + By + Cz = 0 skulle kunna gå, men D är ju en vektor! Linjärt tal(Ax + By + Cz) + vektor(D) går inte!

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
121766
December 16, 2001 - 5:34 pm
sp_Permalink sp_Print

Mera undercover work:

In the plane equation (Ax + By + Cz - D = 0), D specifies the distance between the plane and the origin.

...D måste väl gå att beräkna på ngt bra sätt...Ska D vara så litet som möjligt, lr kan D vara hur stort/litet som helst???

BTW, så vill jag veta allt detta för att få en formel som tar reda på om och vart en linje skär ett plan...Jag är lite ringrostig på planekvationen...

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
121768
December 16, 2001 - 5:38 pm
sp_Permalink sp_Print

Mämen...Vänta här nu...

Ax + By + Cz + D = avståndet!

Hmm...

lumpa
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 127
Member Since:
April 5, 2001
sp_UserOfflineSmall Offline
121778
December 16, 2001 - 6:01 pm
sp_Permalink sp_Print

öhh vill ni veta hur man beräknar kortaste avståndet till origo till planet?
sätt f=x^2 + y^2 +z^2 och försök sedan minimera f=d^2
sätt g=planet och definiera en funktion h så att:
h = f + C*g

Räkna ut ekvations systemet
h'x = 0
h'y = 0
h'z = 0
h'C = 0
När ni löst ut x,y och z, släng in dom i f och lös ut d.

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
121829
December 16, 2001 - 7:44 pm
sp_Permalink sp_Print

Ööö...

Vi kallar (x,y,z) för P

d = |P|

f = x^2 + y^2 +z^2 = P . P

g = normalen till planet...hoppas jag

men detta går inte riktigt ihop:

h = f + C*g

eftersom

h'x = 0
h'y = 0
h'z = 0
h'C = 0

h = (0,0,0,0)

för det ger

(0,0,0,0) = P . P + C * g

då h är en 4d vektor(så långt jag fattar), f o C linjära och C och g är inte ens definerat, så fattar jag inte vart du vill komma...h'C är definerat, men inte C

Då kan vi sammanfatta:

(0,0,0,0) = P . P

Vilket INTE stämmer...

Utveckla...

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
121830
December 16, 2001 - 7:49 pm
sp_Permalink sp_Print

Kom på en sak till:

Ax + By + Cz + D = 0

D = avståndet

Ax + By + Cz + D = avståndet

Ax + By + Cz + ( Ax + By + Cz + ( Ax + By + Cz + ... )) = 0

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
121832
December 16, 2001 - 7:53 pm
sp_Permalink sp_Print

Man do!

Ax + By + Cz + D = D

!!!

Ax + By + Cz + D = 0

D = 0

!!!!

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
121838
December 16, 2001 - 8:08 pm
sp_Permalink sp_Print

Äh! Nu ska jag bara säga vad jag vill:

Vi har fyra vektorer: p1, p2, a, b

p1 o p2 är ändpunkterna på en linje...

a o b är två vektorer som beskriver en polygon...

a varken a lr b är en normal!

I vilken punkt skär p1 o p2 a o b ???

Jerry
Member
Medlem
Forum Posts: 4381
Member Since:
June 18, 2001
sp_UserOfflineSmall Offline
121954
December 17, 2001 - 12:05 am
sp_Permalink sp_Print

Jag förstår ärligt talat inte vad du pratar om och jag har aldrig sett någon svara sig själv fler gånger.
Dock! Är D = 0 ligger planet i origo.
Denna formel beskriver förresten ett oändligt plan vilket tydligen inte är vad du söker.

För att räkna ut vilken punkt ett plan skär en linje kan du sätta upp någon av linjen eller planet i parameterform och sedan ersätta variablerna i den andra figuren med just dessa parametervärden.

Ex:

Linje/plan1: 6X - 3Y + 3 = 0
LInje/plan2: X + 2Y + 1 = 0

Vi gör om ekvation 1 till parameterform:
X = t
Y = 2t + 1

t + 2(2t + 1) + 1 = 0
t = -(3/5)

De skär varandra i punkten (-(3/5), -(1/5))

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
121974
December 17, 2001 - 6:08 am
sp_Permalink sp_Print

Här kommer iaf min icke fungerande kod:


VECTOR LineIntersectPlane( VECTOR a, VECTOR b, VECTOR p1, VECTOR p2 )
{
//a and b are two vectors that form a plane. p1 and p2 are vectors defining
//the end points of the line that we want to check. If that line doesn´t intersect
//the plane, or if an error uccured, this function returns Vector( 0, 0, 0 ).
//Otherwise it returns the intersection point.
VECTOR n = Normal( a, b ); //we geta the normal of the plane
float d = - DotProduct( n, p1 ), //mumbo jumbo which i don´t yet really understand
s1 = DotProduct( n, p1 ) + d,
s2 = DotProduct( n, p2 ) + d;
if( s1 * s2 >= 0 ) //the line does not cross plane
return Vector( 0, 0, 0 );
VECTOR q = ( p2 - p1 ).Normalize(); //get the direction of the line
float Num = - ( DotProduct( n, p1 ) + d ), //mumbo
Denom = DotProduct( n, q );
if( Denom = 0 )
return Vector( 0, 0, 0 ); //to prevent devide by 0
float s = Num / Denom;
VECTOR i = p1 + q * s; //appearently this is the interssection point
float r = 0;
r = VectorAngle( Vector( 0, 0, 0 ) - i, a - i ) + //now find out if it is valid
VectorAngle( a - i, b - i ) + //by calculation the 3 angles between
VectorAngle( b - i, Vector( 0, 0, 0 ) - i ); //the point and each conrner of the poly
if( r > 2 * PI * MATH_FAULT ) //MATH_FAULT = 0.95
return i; //return the intersection point
return Vector( 0, 0, 0 ); //since we have a small error marginal to count with..
}

Det kufiska är det att

LineIntersectPlane(Vector((rand()%1000)/100,(rand()%1000)/100,(rand()%1000)/100),Vector((rand()%1000)/100,(rand()%1000)/100,(rand()%1000)/100),Vector((rand()%1000)/100,(rand()%1000)/100,(rand()%1000)/100),Vector((rand()%1000)/100,(rand()%1000)/100,(rand()%1000)/100))

Alltid returnerar (0,0,0) dvs false...

LineIntersectPlane(Vector(1,0,0),Vector(0,1,0),Vector(.25,.25,-1),Vector(.25,.25,1))

returnerar också (0,0,0)...
Om man ritar upp detta på et papper, så SER man att det SKA returnera (.25,.25,0)...

lumpa
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 127
Member Since:
April 5, 2001
sp_UserOfflineSmall Offline
121982
December 17, 2001 - 6:55 am
sp_Permalink sp_Print

h'x är alltså h deriverat med hänsyn på x.
Efter att du räknat ut h'y h'z h'c. Sätter du alla dess derivator lika med noll.
Detta ger ingen nollvektor, utan ett ekvationssystem med i detta fall fyra obekanta och fyra ekvationer. Efter att du löst ut x y z ur ekvationssystemet kastar du in dom i f, och räknar ut d. Kom ihåg att ekvationssystemet kan ge flera lösningar. Då får du kontrollera vilket som ger kortaste avståndet genom att testa alla punkter var för sig.
Hängde du med?

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
122069
December 17, 2001 - 10:27 am
sp_Permalink sp_Print

Hmmm...Får fundera lite när jag kommer hem...

Hoppsan...Forumet blev lite foxed up

Sajko
Mina inlägg skrivs i binär kod
Medlem
Forum Posts: 151
Member Since:
April 1, 2001
sp_UserOfflineSmall Offline
126398
December 27, 2001 - 8:24 pm
sp_Permalink sp_Print

Åh, man kanske kan ha användning av Linjära Algebran ändå!

Kanske borde ta och läsa på tills nästa tenta, så jag kan få några poäng iaf.

Härdin
Kommer du hit ofta?
Medlem
Forum Posts: 731
Member Since:
December 15, 2001
sp_UserOfflineSmall Offline
126431
December 27, 2001 - 9:20 pm
sp_Permalink sp_Print

aja...jag funderade iaf ut formeln på egen hand:

i = P1 + (P2 - P1) * (-n . P1 / (n . P2 - n . P1))

där P1 o P2 är uppenbara...
n är planets normal, och planet korsar (0,0,0) -> d = 0

Mind
Member
Medlem
Forum Posts: 10550
Member Since:
June 28, 2001
sp_UserOfflineSmall Offline
132157
January 12, 2002 - 4:47 pm
sp_Permalink sp_Print

jahq så simpla saker att ni ens behöver fråga, jag lärde mig ju detta i 5an.

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 62
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL