From a073dc3c983b4c56c5da92642c9ad11995bdb844 Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期一, 11 五月 2020 18:05:31 +0800 Subject: [PATCH] 新的科目三 --- lib/src/main/cpp/test_common/Geometry.cpp | 33 ++++++++++++++++++++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-) diff --git a/lib/src/main/cpp/test_common/Geometry.cpp b/lib/src/main/cpp/test_common/Geometry.cpp index 8c90d31..7f8c02c 100644 --- a/lib/src/main/cpp/test_common/Geometry.cpp +++ b/lib/src/main/cpp/test_common/Geometry.cpp @@ -11,6 +11,9 @@ #include <malloc.h> #include <initializer_list> #include <cctype> +#include <iosfwd> +#include <iomanip> +#include <sstream> #include "../jni_log.h" @@ -37,6 +40,13 @@ inline double toDegree(double radians) { return (radians * 180.0) / M_PI; +} + +double round(double number, unsigned int bits) { + stringstream ss; + ss << setiosflags(ios::fixed) << setprecision(bits) << number; + ss >> number; + return number; } void MakeLine(Line *line, const PointF *p1, const PointF *p2) @@ -442,6 +452,7 @@ } } +// 0 - straight, 1 - left, -1 - right, 2 - front, -2 - back int IntersectionOfLine(PointF p, Line line) { PointF p1, p2; @@ -451,7 +462,7 @@ p2.X = line.X2; p2.Y = line.Y2; - IntersectionOfLine(p1, p2, p); + return IntersectionOfLine(p1, p2, p); } /*************************************************************** @@ -514,6 +525,26 @@ return false; } +bool VerticalPointOnLine(PointF point, Line line, PointF &vp) +{ + PointF p1, p2; + + p1.X = line.X1; + p1.Y = line.Y1; + + p2.X = line.X2; + p2.Y = line.Y2; + + PointF pv = GetVerticalPoint(p1, p2, point); + + if (isEqual2(pv.X, MIN(p1.X, p2.X)) || isEqual2(pv.X, MAX(p1.X, p2.X)) || + (pv.X > MIN(p1.X, p2.X) && pv.X < MAX(p1.X, p2.X))) { + vp = pv; + return true; + } + return false; +} + /**************************************************************** * p3 * | 'L' -- Gitblit v1.8.0