1234567891011121314151617181920212223242526272829303132333435363738 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace BaseLibRWFile
- {
- public class Algorithm
- {
- public static double[,] CalcultePos(double[,] dMarkPos,double[,] dDrawingMarkPos,int iPointCount,double[,] dDrawingPointPos)
- {
- double[,] dResultPos = new double[iPointCount, 2];
- double P1X, P1Y, P2X, P2Y, P1dX, P1dY, P2dX, P2dY;
- P1X = dMarkPos[0, 0];
- P1Y = dMarkPos[0, 1];
- P2X = dMarkPos[1, 0];
- P2Y = dMarkPos[1, 1];
- P1dX = Convert.ToDouble(dDrawingMarkPos[0, 0]);
- P1dY = Convert.ToDouble(dDrawingMarkPos[0, 1]);
- P2dX = Convert.ToDouble(dDrawingMarkPos[1, 0]);
- P2dY = Convert.ToDouble(dDrawingMarkPos[1, 1]);
- double A01 = ((P2X - P1X) / (P2dX - P1dX) - (P2Y - P1Y) / (P2dY - P1dY)) / ((P2dY - P1dY) / (P2dX - P1dX) + (P2dX - P1dX) / (P2dY - P1dY));
- double A00 = ((P2X - P1X) - A01 * (P2dY - P1dY)) / (P2dX - P1dX);
- double B01 = P1X - (A00 * P1dX + A01 * P1dY);
- double B02 = P1Y - (-A01 * P1dX + A00 * P1dY);
- for (int i = 0; i < iPointCount + 1; i++)
- {
- dResultPos[i, 0] = A00 * Convert.ToDouble(dDrawingPointPos[i, 0]) + A01 * Convert.ToDouble(dDrawingPointPos[i, 1]) + B01;
- dResultPos[i, 1] = -A01 * Convert.ToDouble(dDrawingPointPos[i, 0]) + A00 * Convert.ToDouble(dDrawingPointPos[i, 1]) + B02;
- }
- return dResultPos;
- }
- }
- }
|