叉积,点积,线段相交

叉积,点积,线段相交。

//本身比较菜,就暂时只能参考别人的总结。
//这个知识点就是对大学里高等数学中几何知识的计算机应用。
//C++实现。

1.1简单的几何问题。
在这里插入图片描述
在这里插入图片描述
1.2 点积。
在这里插入图片描述
在这里插入图片描述
1.3 叉积
在这里插入图片描述
在这里插入图片描述

以上部分问题的代码实现不再多说,只需要回顾大学高等数学课本知识即可。
上述知识参考《算法竞赛入门经典训练指南》

#include<iostream>
#include<algorithm>
#include<math.h>

using namespace std;

class Vector
{
public:

    double x,y;
    Vector(int a=0,int b=0): x(a),y(b) {}
    Vector operator +(Vector A)
    {
        return Vector(A.x+this->x,A.y+this->y);
    }
    Vector operator -(Vector A)
    {
        return Vector(A.x-this->x,A.y-this->y);
    }
    Vector operator *(double A)
    {
        return Vector(A*this->x,A*this->y);
    }
    Vector operator /(double A)
    {
        return Vector(this->x/A,this->y/A);
    }
};

class Vector3
{
public:

    double x,y,z;
    Vector3(double a,double b,double c): x(a),y(b),z(c) {}
    Vector3 operator +(Vector3 A)
    {
        return Vector3(A.x+this->x,A.y+this->y,A.z+this->z);
    }
    Vector3 operator -(Vector3 A)
    {
        return Vector3(A.x-this->x,A.y-this->y,A.z-this->z);
    }
    Vector3 operator *(double A)
    {
        return Vector3(A*this->x,A*this->y,A*this->z);
    }
    Vector3 operator /(double A)
    {
        return Vector3(this->x/A,this->y/A,this->z/A);
    }
};

double Dot(Vector A,Vector B)
{
    return A.x*B.x+A.y*B.y;
}
double Length(Vector A)
{
    return sqrt(Dot(A,A));
}
double Angle(Vector A,Vector B)
{
    return acos(Dot(A,B)/Length(A)/Length(B));
}


double Dot3(Vector3 A,Vector3 B)
{
    return A.x*B.x+A.y*B.y+A.z*B.z;
}
double Length3(Vector3 A)
{
    return sqrt(Dot3(A,A));
}
double Angle3(Vector3 A,Vector3 B)
{
    return acos(Dot3(A,B)/Length3(A)/Length3(B));
}

double Cross(Vector A,Vector B)
{
    return A.x*B.y-A.y*B.x;
}
double Area(Vector A,Vector B,Vector C)
{
    return Cross(B-A,C-A);
}

Vector3 Cross3(Vector3 A,Vector3 B)
{
    return Vector3(A.y*B.z-A.z*B.y,A.z*B.x-A.x*B.z,A.x*B.y-A.y*B.x);
}
double Area3(Vector3 A,Vector3 B,Vector3 C)
{
    return Length3(Cross3(B-A,C-A));
}



int main()
{

    return 0;
}

1.4 线段相交(二维)

百度后,发现这个博主写的不错,附链接如下:

1.5线段相交(三维)

https://blog.csdn.net/wordsin/article/details/79215342

这个有点复杂,我暂时还没搞懂…
只能…
https://blog.csdn.net/hunter_wwq/article/details/41044179

原文链接:加载失败,请重新获取