#pragma once #ifndef BASE_FUNCTION_EXTEND #define BASE_FUNCTION_EXTEND #include "SSBase/DrawModel/BaseFunction.h" class AFX_EXT_CLASS CBaseFunctionExtend :public CBaseFunction { public: CBaseFunctionExtend(); virtual ~CBaseFunctionExtend(); public: int IsSegmentCross(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4); int LineCrossPoint(double x1, double y1, double k1, double x2, double y2, double k2, double& x0, double& y0); double DotProduct(double x1, double y1, double x2, double y2); double CrossProduct(double x1, double y1, double x2, double y2); //计算直线与线段的交点,成功返回1,若无,返回0,若重合,返回2. //参数 a,b为直线向量,lx0,ly0为直线上一点坐标,(sx1,sy1)(sx2,sy2)为线段两端点,若存在交点(cx,cy)为交点坐标 int SegLineCrossPoint(double a, double b, double lx0, double ly0, double sx1, double sy1, double sx2, double sy2, double& cx, double& cy); //计算三角形A(x1,y1) B(x2,y2) C(x3,y3),顶点B的角平分线与AC边交点(x0,y0)如果ABC共线,求角平分线上距离为1任意一点 bool GetAngularBisector(double x1, double y1, double x2, double y2, double x3, double y3, double& x0, double& y0); }; #endif