Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Analitikus (koordináta) geometriai gyorstalpaló

Hasonló előadás


Az előadások a következő témára: "Analitikus (koordináta) geometriai gyorstalpaló"— Előadás másolata:

1 Analitikus (koordináta) geometriai gyorstalpaló
Szirmay-Kalos László

2 Mindent számmal axiómák pont számok sík műveletek megfeleltetés
egyenes egyenlet illeszkedik metszi függvény geometria algebra

3 Pontok, alakzatok megadása
Mindent számmal! Koordináta rendszer Koordináták megadása Koordináta rendszerek Descartes Polár Homogén

4 Koordináta rendszerek
Yh 1 y 1 r f w Xh x Descartes Polár Baricentrikus Homogén

5 Pontfüggvények: Mozgatás
Vektor = eltolás: v Iránya és hossza (|v|) van Helyvektor De vektor ≠ pont !!! Vektorműveletek v = v1 + v2 (kommutatív, asszoc) v1 = v - v2 (összeadásnak van inverze) v1 = av (összeadásra disztributív) helyvektor origó v1 v2 v av

6 Skaláris szorzás Definíció Jelentés Tulajdonságok v1 v2
v1v2 = |v1||v2|cos Jelentés Egyik vektor vetülete a másikra x másik hossza Tulajdonságok Kommutatív v1v2 = v2v1 Összeadással disztributív v3(v2+v1) = v3v2 + v3v1 vv = |v|2 v2 |v1|cos v2 v1 v3 |v1|cos

7 Vektoriális szorzás Definíció Jelentés Tulajdonságok v1  v2 v2
|v1  v2| = |v1||v2|sin Merőleges, jobbkéz szabály Jelentés Paralelogramma területe, síkjára merőleges (Egyik vektor vetülete a másikra merőleges síkra + 90 fokos forgatás) x másik hossza Tulajdonságok Alternáló v1  v2 = - v2  v1 Összeadással disztributív v3  (v2+v1) = v3  v2 + v3  v1 vv = |v|2 v1 |v1|cos v2 v1 |v1|sin 90 fok v1v2

8 Descartes koordinátarendszer
v = xi + yj Egyértelmű (x = vi, y = vj) Műveletek koordinátákban Összeadás: v1 + v2 = (x1+x2)i + (y1+y2)j Skaláris szorzás: v1  v2 = (x1i + y1 j)  (x2i + y2 j) = (x1 x2 + y1y2) Vektoriális szorzás: v1  v2 = (x1i + y1 j + z1k)  (x2i + y2 j + z2k) = (y1z2 – y2z1) i + (x2z1 – x1z2) j + (x1y2 – y1x2)k Abszolút érték: |v| =  vv =  x2 + y2 + z2 y j j x i i origó i j k x1 y1 z1 x2 y2 z2

9 Vektor és Pont nem ugyanaz!
2D: vektor (x, y) Pont (x, y) 3D: vektor (x, y, z) Pont (x, y, z) Műveletek: Vektor + Vektor = Vektor Pont + Vektor = Pont (eltolás) Vektor – Vektor = Vektor Pont – Pont = Vektor Vektor  Vektor = Vektor Vektor  Vektor = Skalár Vektor * Skalár = Vektor

10 Vektor és Pont tényleg nem ugyanaz!
2D: vektor (x, y, 0) Pont (x, y, 1) 3D: vektor (x, y, z, 0) Pont (x, y, z, 1) Műveletek: Vektor + Vektor = Vektor Pont + Vektor = Pont (eltolás) Vektor – Vektor = Vektor Pont – Pont = Vektor Vektor  Vektor = Skalár Vektor * Skalár = Vektor

11 Vektor osztály struct Vector { float x, y, z, w;
Vector(float x0, float y0, float z0, float w0 = 0) { x = x0; y = y0; z = z0; w = w0; } Vector operator*(float a) { return Vector(x * a, y * a, z * a, w * a); Vector operator+(Vector& v) { return Vector(x + v.x, y + v.y, z + v.z, w + v.w); Vector operator-(Vector& v) { return Vector(x - v.x, y - v.y, z - v.z, w - v.w); float operator*(Vector& v) { return (x * v.x + y * v.y + z * v.z); Vector operator%(Vector& v) { return Vector(y*v.z-z*v.y, z*v.x - x*v.z, x*v.y-y*v.x); float Length() { return sqrt(x * x + y * y + z * z); } };

12 SSE (3DNow!) struct Vector { float x, y, z, w; public:
// class CVector { float x, y, z, w; public: CVector( ) { x = y = z = w = 0.0; } CVector( float x0, float y0, float z0, float w0 = 1.0 ) { x = x0; y = y0; z = z0; w = w0; } float operator*( const Vector& v ) { return (x * v.x + y * v.y + z * v.z); } CVector operator+( const CVector& v ) { __declspec(align(16)) CVector result; #ifdef SIMD __asm { mov esi, this mov edi, v movups xmm0, [esi] movups xmm1, [edi] addps xmm0, xmm1 movaps result, xmm0 } #else result.x = x + v.x; result.y = y + v.y; result.z = z + v.z; result.w = w + v.w; #endif return result; CVector operator*( float f ) { Vector result( x * f, y * f, z * f ); void operator+=( const CVector& v ) { movups [esi], xmm0 x += v.x; y += v.y; z += v.z; void operator*=( float f ) { x *= f; y *= f; z *= f; } CVector operator-( const CVector& v ) { Vector result; subps xmm0, xmm1 result.x = x - v.x; result.y = y - v.y; result.z = z - v.z; CVector operator/( float f ) { Vector result( x/f, y/f, z/f ); CVector operator%( const CVector& v ){ movaps xmm2, xmm0 movaps xmm3, xmm1 shufps xmm0, xmm0, 0xc9 shufps xmm1, xmm1, 0xd2 mulps xmm0, xmm1 shufps xmm2, xmm2, 0xd2 shufps xmm3, xmm3, 0xc9 mulps xmm2, xmm3 subps xmm0, xmm2 result.x = y * v.z - z * v.y; result.y = z * v.x - x * v.z; result.z = x * v.y - y * v.x; float Length( ) { return (float)sqrt( x * x + y * y + z * z ); } void Normalize( ) { float l = Length( ); if ( l < f) { x = 1; y = 0; z = 0; } else { x /= l; y /= l; z /= l; } CVector UnitVector( ) { Vector r = * this; r.Normalize(); return r; float * GetArray() { return &x; } float& X() { return x; } float& Y() { return y; } float& Z() { return z; } friend class Matrix; }; SSE (3DNow!) struct Vector { float x, y, z, w; public: Vector operator+( Vector& v ) { __declspec(align(16)) Vector res; __asm { mov esi, this mov edi, v movups xmm0, [esi] movups xmm1, [edi] addps xmm0, xmm1 movaps res, xmm0 } return res; };

13 2D egyenes n(r – r0) = 0 nx (x – x0) + ny (y – y0) = 0
n normálvektor v irányvektor n(r – r0) = 0 nx (x – x0) + ny (y – y0) = 0 ax + by + c = 0 (x, y, 1)  (a, b, c) = 0 y r0 r x r = r0 + v t, t  [-∞,∞] x = x0 + vx t y = y0 + vy t

14 Sík n(r – r0) = 0 nx (x – x0) + ny (y – y0) + nz (z – z0) = 0
n normálvektor z r0 r y x n(r – r0) = 0 nx (x – x0) + ny (y – y0) + nz (z – z0) = 0 ax + by + cz + d = 0 (x, y, z, 1)  (a, b, c, d) = 0


Letölteni ppt "Analitikus (koordináta) geometriai gyorstalpaló"

Hasonló előadás


Google Hirdetések