【转】C#判断奇偶数的函数

// 现代流行的"程序员"
public static bool IsOdd(int n) 
{ 
    while (true)
    {
        switch (n)
       {
            case 1: return true;
            case 0: return false;
        }
        n -= 2;
    }
} 

// 中规中矩的程序员 
public static bool IsOdd(int n)
{ 
    return (n % 2 == 1) ? true : false;
} 

// 有经验的C#程序员 
public static bool IsOdd(int n)
{ 
    return Convert.ToBoolean(n % 2);
} 

// 汇编程序员 
public static bool IsOdd(int n)
{ 
    return Convert.ToBoolean(n & 1);
} 

 

转载于:https://www.cnblogs.com/dayang12525/p/6206339.html

C#中,判断鼠标是否位于多边形内部通常涉及到几何学算法,特别是点是否在多边形内的测试,比如著名的“射线法”(Ray Casting)或者“扫描线法”(Line-Sweeping)。以下是一个简单的步骤描述: 1. 定义一个多边形:多边形由一系列顶点(Point对象)组成,每个顶点代表多边形的一条边。 2. 将鼠标位置换为二维坐标:首先获取鼠标的屏幕坐标,并将其换到多边形的参照系内。 3. 创建一个函数检查鼠标点与多边形的关系:遍历多边形的每个边,对于每对相邻的顶点,创建一条从第一个顶点到第二个顶点的直线作为射线,然后检查射线是否包含鼠标点。如果鼠标点在射线的左侧(按照顺时针方向),则它在多边形外部;如果在右侧,则继续检查下一个边。当完成所有边的检查,如果鼠标点处于最后一条边和下一条边之间的区域,则认为鼠标在多边形内。 ```csharp bool IsMouseInPolygon(Point[] polygonVertices, Point mousePosition) { int count = polygonVertices.Length; bool oddIntersection = false; for (int i = 0; i < count; i++) { Point a = polygonVertices[i]; Point b = polygonVertices[(i + 1) % count]; // 使用模运算处理边界条件 if (MouseOverSegment(a, b, mousePosition)) { oddIntersection ^= true; // 如果当前交点奇数次,则翻结果 } } return oddIntersection; // 返回交点偶数次还是奇数次,偶数表示在内部 } // 辅助函数判断线段是否包含鼠标点 private bool MouseOverSegment(Point a, Point b, Point mousePosition) { float crossProduct = (b.Y - a.Y) * (mousePosition.X - a.X) - (b.X - a.X) * (mousePosition.Y - a.Y); return crossProduct > 0 && (mousePosition.X <= Math.Max(a.X, b.X) || mousePosition.X > Math.Min(a.X, b.X)) && mousePosition.Y <= Math.Max(a.Y, b.Y); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值