3D數學 矩陣和線性變換之縮放

2021-07-03 22:57:12 字數 2620 閱讀 2033

1. 具有縮放效果的矩陣是怎樣的?

我們這裡只做沿著x、y、z軸方向的縮放,至於沿著任意方向的縮放比較複雜而且也很少用,所以暫時不介紹。如下圖所示,原理非常簡單,x、y、z乘上對應的縮放係數kx,ky,kz就得到了縮放後的結果。

2. 縮放矩陣程式設計示例

void matrix3x3::setscale(vector3& vec)

3. 縮放矩陣程式設計完整示例**

#pragma once

class vector3;

//標量乘向量

vector3 operator*(float scalar, vector3& vec);

#include "vector3.h"

#include

vector3::vector3():x(0.0),y(0.0),z(0.0)

vector3::vector3(float x,float y,float z):x(x),y(y),z(z)

void vector3::zero()

vector3 vector3::operator-() const

float vector3::length() const

vector3 vector3::operator*(float scalar)

vector3& vector3::operator*=(float scalar)

vector3& vector3::operator/=(float scalar)

vector3 operator*(float scalar, vector3& vec)

vector3 vector3::operator/(float scalar)

void vector3::normal()

vector3 vector3::operator+(vector3& rhs) const

vector3& vector3::operator+=(vector3& rhs)

vector3 vector3::operator-(vector3& rhs) const

vector3& vector3::operator-=(vector3& rhs)

float vector3::distance(vector3& vec) const

float vector3::operator*(vector3& rhs) const

vector3 vector3::crossproduct(vector3& vec) const

#pragma once

#include

enum e_axis;

const

float pi = 3.14159;

#pragma once

#include "mathutil.h"

#include "vector3.h"

class matrix3x3

;//向量乘以矩陣

vector3 operator*(vector3& vec,matrix3x3& mat);

//向量乘等矩陣

vector3& operator*=(vector3& vec,matrix3x3& mat);

#include "matrix3x3.h"

#include

matrix3x3 matrix3x3::operator*(matrix3x3& rhs)

matrix3x3& matrix3x3::operator*=(matrix3x3& rhs)

vector3 operator*(vector3& vec,matrix3x3& mat)

vector3& operator*=(vector3& vec,matrix3x3& mat)

void matrix3x3::setrotate(e_axis axis,float theta)

case axis_y:

case axis_z:

default:

assert(false);

}}void matrix3x3::setscale(vector3& vec)

#include 

#include "vector3.h"

#include "matrix3x3.h"

using

namespace

std;

float tozero(float num)

void print_v(vector3 v)

void print_m(matrix3x3 m)

int main()

4. **執行結果

[ 10, 20, 30 ]

[ 10, 40, 90 ]

3D數學 矩陣和線性變換之映象

1.什麼是映象變換?在2d中映象變換就如下圖所示,沿著某條軸發生對稱現象就叫映象變換。在3d中同理可以得到沿著某個平面發生對稱的現象。2.映象變換的矩陣是怎樣的?我們想來看簡單的,沿著x軸 y軸或z軸發生映象變換 注意是 沿著 軸的映象,而不是 關於 軸對稱 原理很簡單,只需要讓x y或z變為相反數...

3D數學 矩陣和線性變換之正交投影

1.具有正交投影效果的矩陣是怎樣的?這裡給出乙個正交投影在法向量 而且同時又是單位向量 為 x,y,z 平面上的投影矩陣,數學證明暫時不說,詳見 3d數學基礎 圖形與遊戲開發 2.投影矩陣程式設計示例 void matrix3x3 setorthproject vector3 vec 3.投影矩陣程...

線性變換之縮放

向量v通過單位向量n作為縮放方向,k作為縮放因子的縮放後的向量為 s n,k v k 1 v n n 2d縮放矩陣 通過上面的公式可以知道 nx ny為向量n的x和y分量 s 1 0 k 1 k 1 nx k 1 nxny s 0 1 k k 1 nxny 1 k 1 ny so 1 k 1 nx ...