pref: 换用卡马克的快速开方求倒函数

虽然用的地方不是很多()
This commit is contained in:
bmy
2024-03-10 20:02:40 +08:00
parent c1e2b75aa5
commit ae70d9388e
5 changed files with 39 additions and 17 deletions

View File

@@ -141,8 +141,8 @@ void GetLinesResample(float pts_in[][2], int32_t num1, float pts_out[][2], int32
float dx1 = x1 - x;
float dy1 = y1 - y;
float dist0 = sqrt(dx0 * dx0 + dy0 * dy0);
float dist1 = sqrt(dx1 * dx1 + dy1 * dy1);
float dist0 = Q_sqrt(dx0 * dx0 + dy0 * dy0);
float dist1 = Q_sqrt(dx1 * dx1 + dy1 * dy1);
float r0 = (dist1 - dist) / (dist1 - dist0);
float r1 = 1 - r0;
@@ -200,7 +200,7 @@ void GetMidLine_Left(float pts_left[][2], int32_t pts_left_count, float mid_left
for (int i = 0; i < pts_left_count; i++) {
float dx = pts_left[clip(i + approx_num, 0, pts_left_count - 1)][1] - pts_left[clip(i - approx_num, 0, pts_left_count - 1)][1];
float dy = pts_left[clip(i + approx_num, 0, pts_left_count - 1)][0] - pts_left[clip(i - approx_num, 0, pts_left_count - 1)][0];
float dn = sqrt(dx * dx + dy * dy);
float dn = Q_sqrt(dx * dx + dy * dy);
dx /= dn;
dy /= dn;
mid_left[i][0] = pts_left[i][0] + dx * dist;
@@ -215,7 +215,7 @@ void GetMidLine_Right(float pts_right[][2], int32_t pts_right_count, float mid_r
for (int i = 0; i < pts_right_count; i++) {
float dx = pts_right[clip(i + approx_num, 0, pts_right_count -1)][1] - pts_right[clip(i - approx_num, 0, pts_right_count -1 )][1];
float dy = pts_right[clip(i + approx_num, 0, pts_right_count -1)][0] - pts_right[clip(i - approx_num, 0, pts_right_count -1)][0];
float dn = sqrt(dx * dx + dy * dy);
float dn = Q_sqrt(dx * dx + dy * dy);
dx /= dn;//sin
dy /= dn;//cos
mid_right[i][0] = pts_right[i][0] - dx * dist;