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 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决