首页 / C# / c#-用数组模拟4个象限
c#-用数组模拟4个象限
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-用数组模拟4个象限,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1671字,纯文字阅读大概需要3分钟。
内容图文
![c#-用数组模拟4个象限](/upload/InfoBanner/zyjiaocheng/679/cc7c7ee065df421fbfcd85ed2fde8965.jpg)
我正在使用C#创建一个应用程序,该应用程序构建对象并将其移动到笛卡尔平面上的不同位置.我从位置(0,0)的第一个对象开始.我以为可以在2D数组中表示这个对象,但是应该如何在(-x,y),(-x,-y)或(x,-y)位置表示对象呢?
现在,我正在考虑使用四个数组来表示不同的象限.如何更改数组索引的下限?那可能吗?如果不是,我想我可以做一些算术运算来将-x或-y数字映射到每个数组的自然数,不过我希望有另一种解决方案.
我还考虑过将原点放在数组的中间,但是数组会在运行时增长,因此我将不得不不断地移动内容以找到新的中间.这似乎更令人困惑.
我能正确处理吗?有没有更简单的解决方案?
解决方法:
我认为您可能正在考虑您遇到的问题.根据您发布的内容,您需要了解:
>给定点在笛卡尔平面上的哪个象限?
我会设想这样的解决方案:
enum CartesianQuadrant {
None = 0,
I,
II,
III,
IV,
}
struct Point {
public readonly double X;
public readonly double Y;
public readonly CartesianQuadrant Quadrant;
public Point(double x, double y) {
X = x;
Y = y;
Quadrant = x == 0 || y == 0 ? CartesianQuadrant.None :
x > 0 ? y > 0 ? CartesianQuadrant.I : CartesianQuadrant.IV :
y > 0 ? CartesianQuadrant.II : CartesianQuadrant.III;
}
}
然后,当您初始化Point时,Point.Quadrant将具有坐标所在的象限.然后,您可以拥有Point []或IList< Point> ;,或者满足您需要的任何集合. 用法示例:
var p1 = new Point(3.0, 2.0); // p1.Quadrant == CartesianQuadrant.I
var p2 = new Point(-3.0, 2.0); // p2.Quadrant == CartesianQuadrant.II
var p3 = new Point(-3.0, -2.0); // p2.Quadrant == CartesianQuadrant.III
var p4 = new Point(3.0, -2.0); // p2.Quadrant == CartesianQuadrant.IV
var pnone1 = new Point(0.0, 2.0); // p2.Quadrant == CartesianQuadrant.None
var pnone2 = new Point(2.0, 0.0); // p2.Quadrant == CartesianQuadrant.None
var pnone3 = new Point(0.0, 2.0); // p2.Quadrant == CartesianQuadrant.None
内容总结
以上是互联网集市为您收集整理的c#-用数组模拟4个象限全部内容,希望文章能够帮你解决c#-用数组模拟4个象限所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。