中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
这是原来写的如何判断点与有向线段关系的程序,有帮助于看懂我下面那个程序(C#2.0)
作者:未知 时间:2005-07-27 21:29 出处:CSDN 责编:chinaitpower
              摘要:这是原来写的如何判断点与有向线段关系的程序,有帮助于看懂我下面那个程序(C#2.0)

#region Using directives

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

#endregion

namespace polygon
{
    partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
       
        //定义点结构体
        public struct point
        {
            public float x;
            public float y;
        }

        public int ptnum;//顶点数目

        public int count=0;//读取多边形顶点坐标计数器

        public void button3_Click(object sender, EventArgs e)
        {
            if (textBox5.Text == "")
                MessageBox.Show("请输入顶点个数");
            else
                Newpt();
        }

        public void Newpt()
        {
            ptnum = int.Parse(textBox5.Text);
            point[] pt = new point[ptnum];
        }

        //读取用户输入的顶点坐标
        public point[] Getpt()
        {
            pt[count].x = float.Parse(textBox1.Text);
            pt[count].y = float.Parse(textBox2.Text);
            count++;
            return (pt);
        }

        //读取用户输入的独立点坐标 并 判断其与多边形的位置关系
        private void Judge(point[] pt)
        {
            float Px, Py;
            Px = float.Parse(textBox3.Text);
            Py = float.Parse(textBox4.Text);
            float[] line = new float[ptnum - 1];
            float flag = 1;
            for (int i = 1; i < ptnum; i++)
            {
                line[i - 1] = (pt[i].y - pt[i - 1].y) * Px + (pt[i - 1].x - pt[i].x) * Py +
                    (pt[i].x - pt[i - 1].x) * pt[i - 1].y - (pt[i].y - pt[i - 1].y) * pt[i - 1].x;
                flag *= line[i - 1];
                if (flag < 0)
                {
                    MessageBox.Show("点在多边形之外");
                    break;
                }
                else if (flag == 0 && i == ptnum - 1)
                {
                    MessageBox.Show("点在多边形边界上");
                    break;
                }
                else if (flag > 0 && i == ptnum - 1)
                {
                    MessageBox.Show("点在多边形之内");
                    break;
                }

            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox3.Text != "" && textBox4.Text != "")
                Judge(pt);
            else
                MessageBox.Show("请输入独立点坐标");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (count < ptnum)
            {
                Getpt();
                count++;
            }
            else
                MessageBox.Show("已经输入了"+Convert.ToString(ptnum)+"个顶点坐标");
        }

    }
}


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有