图形学笔记

1、点乘学习:

    //判断前后
    //找到两个向量的夹角,判断法线  = Cos(A点乘B)
    //A向量投影B向量上,P = kB(标准向量)    K = B.length * cos夹角,用作垂直与平行的分解

投影说明   :  蓝图实现:   
    //  ^
        a    这样代表( ^ )符号代表,标准向量 (A-B).normalize

2、叉乘:

    //判断左右:在一个平面上,A X B = 正数:A在B的右面,负数:A在B左面
    
    X    A
    ^
    |
    |
    |
    ————————> Y B
    
    //判断内外:
    //逆时针对AB叉乘AP,BC叉乘AP,CA叉乘AP,如果都左面,则在内面,只有一种判断不在左面,则在外面
    //同一个方向,在内面,有一个不同,在外面    
        
                A
               /\
              /     \
             /    P \
            B------C

3、已知两点(A,B)位置,夹角90度,求A点平移的C点

          1、vector2d =(B点 -  A点 ).normalize2d

          2、vector = (vector2d 叉乘( 0,0,1)).normalize

          3、(verctor * offsetValue) + A点 = C点

理解:已知一个向量,与z轴向量叉乘,得出第三个垂直向量。

4、矩阵旋转

 使用蓝图实现:

把Point点旋转Angel角度

注:绕着某一点旋转,需要旋转后+平移位置

FVector2D MatrixRotator(FVector2D OriginPoint, FVector2D RotationPoint, float InAngel)
{
	//公式:x' = xCosθ - ysinθ, y'=xsinθ + yCosθ
	float X = RotationPoint.X * FMath::Cos(PI / (180.f) * InAngel) - 
                    RotationPoint.Y * FMath::Sin(PI / (180.f) * InAngel);
	float Y = RotationPoint.X * FMath::Sin(PI / (180.f) * InAngel) + 
                    RotationPoint.Y * FMath::Cos(PI / (180.f) * InAngel);
	//绕着原点旋转
	return FVector2D(X, Y) + OriginPoint;
}

5、最大公约数

把正方形填满矩形,需要获取正方形的边长(则最大公约数)

 举例: 如果宽是100 高是50 最大公约数算出来是50 那么用50x50正方形可填充,如果 宽60 高40 那么最大公约数是20。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值