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ó Szirmay-Kalos László.

Hasonló előadás


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

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

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

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

4 Koordináta rendszerek x y r  XhXh YhYh w Descartes Polár Baricentrikus Homogén 1 1

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

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

7 Vektoriális szorzás l Definíció –|v1  v2| = |v1|  |v2|  sin  –Merőleges, jobbkéz szabály l 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 l Tulajdonságok –Alternáló v1  v2 = - v2  v1 –Összeadással disztributív v3  (v2+v1) = v3  v2 + v3  v1 –v  v = |v| 2  v1 v2 |v1|  cos  v1  v2  v2 v1 |v1|  sin  v1  v2 90 fok

8 Descartes koordinátarendszer x i y j origó i j v = xi + yj l Egyértelmű (x = v  i, y = v  j) l Műveletek koordinátákban Összeadás: v 1 + v 2 = (x 1 +x 2 )i + (y 1 +y 2 )j Skaláris szorzás: v 1  v 2 = (x 1 i + y 1 j)  (x 2 i + y 2 j) = (x 1 x 2 + y 1 y 2 ) Vektoriális szorzás: v 1  v 2 = (x 1 i + y 1 j + z 1 k)  (x 2 i + y 2 j + z 2 k) = (y 1 z 2 – y 2 z 1 ) i + (x 2 z 1 – x 1 z 2 ) j + (x 1 y 2 – y 1 x 2 )k Abszolút érték: |v| =  v  v =  x 2 + y 2 + z 2 i j k x 1 y 1 z 1 x 2 y 2 z 2

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

10 Vektor és Pont tényleg nem ugyanaz! l 2D: vektor (x, y, 0) Pont (x, y, 1) l 3D: vektor (x, y, z, 0) Pont (x, y, z, 1) l Műveletek: Vektor + Vektor = VektorPont + Vektor = Pont (eltolás) Vektor – Vektor = VektorPont – 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!) // 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 { movesi, this movedi, v movupsxmm0, [esi] movupsxmm1, [edi] addpsxmm0, xmm1 movapsresult, 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 ); return result; } void operator+=( const CVector& v ) { #ifdef SIMD __asm { movesi, this movedi, v movupsxmm0, [esi] movupsxmm1, [edi] addpsxmm0, xmm1 movups[esi], xmm0 } #else x += v.x; y += v.y; z += v.z; #endif } void operator*=( float f ) { x *= f; y *= f; z *= f; } CVector operator-( const CVector& v ) { Vector result; #ifdef SIMD __asm { movesi, this movedi, v movupsxmm0, [esi] movupsxmm1, [edi] subpsxmm0, xmm1 movapsresult, xmm0 } #else result.x = x - v.x; result.y = y - v.y; result.z = z - v.z; #endif return result; } CVector operator/( float f ) { Vector result( x/f, y/f, z/f ); return result; } CVector operator%( const CVector& v ){ Vector result; #ifdef SIMD __asm { movesi, this movedi, v movupsxmm0, [esi] movupsxmm1, [edi] movapsxmm2, xmm0 movapsxmm3, xmm1 shufpsxmm0, xmm0, 0xc9 shufpsxmm1, xmm1,0xd2 mulpsxmm0, xmm1 shufpsxmm2, xmm2, 0xd2 shufpsxmm3, xmm3,0xc9 mulpsxmm2, xmm3 subpsxmm0, xmm2 movapsresult, xmm0 } #else result.x = y * v.z - z * v.y; result.y = z * v.x - x * v.z; result.z = x * v.y - y * v.x; #endif return result; } 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; }; struct Vector { float x, y, z, w; public: Vector operator+( Vector& v ) { __declspec(align(16)) Vector res; __asm { movesi, this movedi, v movupsxmm0, [esi] movupsxmm1, [edi] addpsxmm0, xmm1 movapsres, xmm0 } return res; } };

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

14 Sík n  (r – r 0 ) = 0 n x (x – x 0 ) + n y (y – y 0 ) + n z (z – z 0 ) = 0 ax + by + cz + d = 0 (x, y, z, 1)  (a, b, c, d) = 0 y n normálvektor z x r0r0 r


Letölteni ppt "Analitikus (koordináta) geometriai gyorstalpaló Szirmay-Kalos László."

Hasonló előadás


Google Hirdetések