xiaoqian2012 2017-05-08 01:33 采纳率: 0%
浏览 992

求助,把一段java代码转换成.net代码或者js代码

public class Point {

double x;

double y;

}

/** 
 * 返回一个点是否在一个多边形区域内 
 * 
 * @param mPoints 多边形坐标点列表 
 * @param point   待判断点 
 * @return true 多边形包含这个点,false 多边形未包含这个点。 
 */  
public static boolean isPolygonContainsPoint(List<Point> mPoints, Point point) {  
    int nCross = 0;  
    for (int i = 0; i < mPoints.size(); i++) {  
        Point p1 = mPoints.get(i);  
        Point p2 = mPoints.get((i + 1) % mPoints.size());  
        // 取多边形任意一个边,做点point的水平延长线,求解与当前边的交点个数  
        // p1p2是水平线段,要么没有交点,要么有无限个交点  
        if (p1.y == p2.y)  
            continue;  
        // point 在p1p2 底部 --> 无交点  
        if (point.y < Math.min(p1.y, p2.y))  
            continue;  
        // point 在p1p2 顶部 --> 无交点  
        if (point.y >= Math.max(p1.y, p2.y))  
            continue;  
        // 求解 point点水平线与当前p1p2边的交点的 X 坐标  
        double x = (point.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;  
        if (x > point.x) // 当x=point.x时,说明point在p1p2线段上  
            nCross++; // 只统计单边交点  
    }  
    // 单边交点为偶数,点在多边形之外 ---  
    return (nCross % 2 == 1);  
}  
  • 写回答

1条回答 默认 最新

  • threenewbee 2017-05-08 01:54
    关注
     这段代码修改we.net,只需要对List<Point>的调用修改就可以,别的不用修改
    mPoints.get(i); -> mPoints[i];
    mPoints.size() -> mPoints.Count
    
    Math.min(p1.y, p2.y)改成 (p1.y > p2.y ? p2.y : p1.y)
    max的类似
    
    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试