一般的都是给定功能让写程序,如下有个函数请读出有何功能。
这段函数本来是本人 反编译出来的。
修改前:
Point GetCrossPoint(int i, int j, int k, int l, int i1, int j1, int k1)
Point point = new Point();
if(i == 1 || i == 5)
{
point.x = k;
point.y = (int)Math.round((double)i1 - ((double)(k1 - i1) * (double)(l - k)) / (double)(j1 - l));
} else
{
point.x = (int)Math.round(((double)(j1 - l) * (double)(i1 - k) - (double)((k1 - i1) * l)) / (double)(j * (j1 - l) + (i1 - k1)));
point.y = j * point.x + k;
}
if(point.y > Math.max(i1, k1) || point.y < Math.min(i1, k1) || point.x > Math.max(l, j1) || point.x < Math.min(l, j1))
{
point.x = 999;
point.y = 999;
}
return point;
}
修改后:
Point GetCrossPoint(int flag, int unknow, int x, int x0, int y0, int x1, int y1)
{
Point point = new Point();
if(flag == 1 || flag == 5)//这种情况下:(x0,y0),(point.x,point.y),(x1,y1)共线
{
point.x = x;
point.y = (int)Math.round((double)x0- ((double)(y1 - y0) * (double)(x0 - x)) / (double)(x1 - x0));
}
else//这种情况呢?
{
point.x = (int)Math.round(((double)(x1 - x0) * (double)(y0 - x) - (double)((y1 - y0) * x0)) / (double)(unknow * (x1 - x0) + (y0 - y1)));
point.y = unknow * point.x + x;
}
//如果求得的(x,y)在(x0,y0)(x1,y1)之外
if(point.y > Math.max(y0, y1) || point.y < Math.min(y0, y1) || point.x > Math.max(x0, x1) || point.x < Math.min(x0, x1))
{
point.x = 999;
point.y = 999;
}
return point;
}
麻烦各位看看else里是什么意思。
可能有用的联想:贝塞尔曲线,轮廓...
这段函数本来是本人 反编译出来的。
修改前:
Point GetCrossPoint(int i, int j, int k, int l, int i1, int j1, int k1)
Point point = new Point();
if(i == 1 || i == 5)
{
point.x = k;
point.y = (int)Math.round((double)i1 - ((double)(k1 - i1) * (double)(l - k)) / (double)(j1 - l));
} else
{
point.x = (int)Math.round(((double)(j1 - l) * (double)(i1 - k) - (double)((k1 - i1) * l)) / (double)(j * (j1 - l) + (i1 - k1)));
point.y = j * point.x + k;
}
if(point.y > Math.max(i1, k1) || point.y < Math.min(i1, k1) || point.x > Math.max(l, j1) || point.x < Math.min(l, j1))
{
point.x = 999;
point.y = 999;
}
return point;
}
修改后:
Point GetCrossPoint(int flag, int unknow, int x, int x0, int y0, int x1, int y1)
{
Point point = new Point();
if(flag == 1 || flag == 5)//这种情况下:(x0,y0),(point.x,point.y),(x1,y1)共线
{
point.x = x;
point.y = (int)Math.round((double)x0- ((double)(y1 - y0) * (double)(x0 - x)) / (double)(x1 - x0));
}
else//这种情况呢?
{
point.x = (int)Math.round(((double)(x1 - x0) * (double)(y0 - x) - (double)((y1 - y0) * x0)) / (double)(unknow * (x1 - x0) + (y0 - y1)));
point.y = unknow * point.x + x;
}
//如果求得的(x,y)在(x0,y0)(x1,y1)之外
if(point.y > Math.max(y0, y1) || point.y < Math.min(y0, y1) || point.x > Math.max(x0, x1) || point.x < Math.min(x0, x1))
{
point.x = 999;
point.y = 999;
}
return point;
}
麻烦各位看看else里是什么意思。
可能有用的联想:贝塞尔曲线,轮廓...
解决方案 »
- Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError:
- 关于Java Swing Timer的疑问
- 贴一个有难度的递归的例子,顶者有分。
- 如何模拟ActionForm
- 关于SimpleDateFormat的问题
- 为什么我的聊天窗口不能通信呢?
- ····JAVA学习提问1····多谢高手指教
- 如何将OutputStream流中的内容写到一个String对象中??
- 大家能否帮小弟啊,急死了没有办法,谁有认识上海电信内部的人啊?
- 谁用JBUILDER写过SQLJ方面的程序
- 请求帮助,图片旋转后的问题,让我百思不得其解
- 一个程序问题。关于synchornized的
我的猜测是:如果第一种情况是像你说的(x0,y0),(point.x,point.y),(x1,y1)共线
那么else的情况应该是:(x0,y0)(x1,y1)所成直线与(point.x,point.y)所在直线是相交线,且point.x,point.y所在直线斜率为unknow
根据 point.y = j * point.x + k;知道(Point.x,Point.y)点一定在 斜率为unknown,截距为x的直线上。若如9楼所说 是个线性问题的话(把(x0,y0)与(x1,y1)看成组成直线的两点),那
point.x = (int)Math.round(((double)(x1 - x0) * (double)(y0 - x) - (double)((y1 - y0) * x0)) / (double)(unknow * (x1 - x0) + (y0 - y1)));
point.y = unknow * point.x + x;
这一点到底表示的是什么意思呢~?有没有几何解释呢~还望大家再想想~
如果变化的话,就看X0,Y0,X1,Y1怎么规律变化。如果有某种规律,那么可以是任何情况。
具体代码想做什么,那么就看所有代码的意思了。