请问在C#中数据循环比较内插?

1,3,94
2,31,231
3,49,72
4,71,230
5,118,217
……

首先计算1与2的距离S
然后如果80*1《S《80*2,则在1和2之间等分内插NC1.
如果80*2《S《80*3,则在1和2之间等分内插NC1.,NC2
……
如果80*11《S《80*12,则在1和2之间等分内插NC1.,NC2,……,NC11
然后2与3进行比较循环
……
最后一行数据与1进行比较

德玛西亚99
浏览 136回答 2
2回答

POPMUISE

是我理解有问题?我怎么不明白你想问什么?上面一堆数和你的文字什么关系? 1与2的距离S=1? 再拿1和80*n、80*(n+1)比较?最后一行数什么?80*1、80*12?比较之后呢?没了?

FFIVE

1、你的NC1、NC2.....都是点坐标把?2、你的规则显然不行,我将按照以下规则插点80 <= S < 80*2,插1个点80*2 <= S < 80*3,插2个点80*3 <= S < 80*4,插3个点.......struct MyPoint{public double X;public double Y;public MyPoint(double x, double y){X = x;Y = y;}}public double Distance(MyPoint p1,MyPoint p2){double x = Math.Pow(p1.X - p2.X, 2);double y = Math.Pow(p1.Y - p2.Y, 2);return Math.Sqrt(x + y);}public Point[] Insert (MyPoint p1, MyPoint p2, int count){if (count <= 0)return null;MyPoint[] NClist = new MyPoint[count];//count表示要插入多少个点,用p1、p2表示要在哪两个点之间插点。//在p1、p2间插入count个点,就要把p1、p2间等分成count+1段double x = Math.Abs(p1.X - p2.X) / (count + 1);double y = Math.Abs(p1.Y - p2.Y) / (count + 1);for (int i = 1; i < count; i++){//i=0时,是p1点,所以从i=1开始循环;//若要在NClist里包含p1、p2,修改循环条件为 int i=0:i<=count;i++NClist[i] = new MyPoint(p1.X + x * i, p1.Y + y * i);}return NClist;}//然后是等分内插算法public void AVGInsert(MyPoint p1, MyPoint p2){MyPoint[] NClist;int local = 80;int count = 0;double distance = Distance(p1, p2);if (distance < local)return;if (distance < local * 7){//小于7倍if (distance < local * 4){//小于4倍if (distance < local * 3){//小于3倍if (distance < local * 2)count = 1;//1--2elsecount = 2;//2--3}count = 3;//3--4}else{//大于4倍if (distance < local * 5)count = 4;//4--5else if (distance < local * 6)count = 5;//5--6else count = 6;//6--7}}else{//大于7倍if (distance < local * 10){//小于10倍if (distance < local * 8)count = 7;//7--8else if (distance < local * 9)count = 8;//8--9else count = 9;//9--10}else{//大于10倍if (distance < local * 11)count = 10;//10--11else count = 11;//11--12}}NClist = Insert(p1, p2, count);}//我没测试过,你自己再检查一下逻辑。
打开App,查看更多内容
随时随地看视频慕课网APP