如何在C#中判断一条线是否与一个多边形相交?
我有一个与此相似的问题: 如何知道一条线是否在C#? 中相交 我正在寻找一种方法(在C#中),该方法告诉一条线是否与任意多边形相交. 我认为 Chris Marasti-Georg 算法 非常有帮助,但缺少最重要的方法,即符合的方法线相交. 有人知道完成Chris Marasti-Georg的代码或类似的东西吗? 在C#? 中是否有内置代码 此方法可与Bing Maps算法一起使用,并具有禁止区域功能.所得路径不得穿过禁区(任意多边形). 解决方案 没有内置代码用于.NET框架中的边缘检测. 以下是执行您需要的代码(移植到C#)(实际算法是在Google组上的Comp.Graphics.algorithm中找到的): public static PointF FindLineIntersection(PointF start1, PointF end1, PointF start2, PointF end2) { float d
0 2024-04-15
编程技术问答社区
在Unity 2D中翻转一个2D精灵动画
我有一个关于2D Sprite动画的快速问题,我在任何地方都找不到专门回答的问题: 我有一个带有步行动画的精灵.但是,我显然想在他左走(2D侧滚动器)时将动画翻转到左边. 我可以使用transform.localscale.x轻松地翻转精灵本身,但是,只能翻转精灵.不是动画剪辑. (这不再发生在Unity中) 所以,当精灵翻转时,动画剪辑开始播放的那一刻,它会向右翻转(因为我唯一拥有的动画剪辑是适合正确的面孔精灵). 是将其翻转Photoshop中的精灵的唯一方法,还是有办法以Unity进行操作? 谢谢! 更新:使用Unity的实际版本,如果您通过将变换量化-1 -1,则动画帧也会缩放. 解决方案 我终于通过这样做了: void Flip() { // Switch the way the player is labelled as facing facingRight = !facingRight; // Mu
2 2024-04-14
编程技术问答社区
用WPF绘制数千个数据点的最有效方式?
我写了一个显示财务数据的图表.当我与PathFigure和PathFigure和LineSegment s一起使用PathGeometry的绘制小于10.000点时的性能是不错的.但是现在,我需要同时显示高达100.000点(不滚动),并且它的速度已经很慢,有50.000点.我在想StreamGeometry,但是我不确定,因为它基本上与PathGeometry跨度与字节流相同.是否有人有想法使这种表现更多,或者甚至有人已经做了类似的事情? 编辑:这些数据点一旦绘制就不会更改,因此,如果有潜力优化,请告诉我(现在冻结行段). 编辑:我尝试了流域.由于某种原因,创建图形花费甚至更长的时间,但这不是问题.在绘制所有点之后,在图表上绘制图表仍与上一个方法一样慢.我认为WPF要处理的数据点太多了. 编辑:我已经进行了一些实验,我注意到通过转换以前倍增的坐标以防止WPF抗稳定子像素线来提高性能. . 编辑:感谢所有响应,建议减少行段数量.我将它们减少到最多是阶梯线的水平分
0 2024-04-14
编程技术问答社区
将n个点逼近最佳拟合的曲线
我有n个点(2D)的列表:p1(x0,y0),p2(x1,y1),p3(x2,y2)… 点满足每个点具有唯一坐标的条件,也满足每个点XI,yi> 0和XI的坐标,Yi是整数. 任务是编写算法,该算法近似这些点 曲线y = | Acos (Bx) |最佳拟合(接近或等于100%) ,以使系数A和B尽可能简单. 我想在C#中编写一个程序,但对我来说最大的问题是找到合适的算法.有人可以帮助我吗? 解决方案 以B为独立参数,可以使用最小二乘A解决拟合,然后计算拟合残差. 残基函数是复杂的,具有不同的值的最小值和不规则的行为.无论如何,如果Xi是整数,则该函数是周期性的,与Xi的LCM相关的周期. 下面的图显示了B的拟合残留物,从0到2以及从0到0,以及给定的样品点. 其他解决方案 基于近似搜索的工作原理我会在C ++中尝试一下: // (global) input data #define _n 100 double px[_n]; // x
0 2024-04-14
编程技术问答社区
在winforms应用程序中确定一个像素的颜色
我希望能够在屏幕上的某个点确定Winform的背景色,因此我可以根据特定的颜色采取一些措施.可悲的是,绘制库似乎没有指定使我这样做的方法. 然后我应该在某个点确定颜色? 解决方案 使用: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.Drawing; namespace ColorUnderCursor { class CursorColor { [DllImport("gdi32")] public static extern uint GetPixel(IntPtr hDC, int XPos, int YPos); [DllImport("user32.dll", Cha
0 2024-04-14
编程技术问答社区
如何在C#中知道一条线是否与一个平面相交?
我有两个点(一个线段)和一个矩形.我想知道如何计算线段是否与矩形相交. 解决方案 来自我的"几何"类: public struct Line { public static Line Empty; private PointF p1; private PointF p2; public Line(PointF p1, PointF p2) { this.p1 = p1; this.p2 = p2; } public PointF P1 { get { return p1; } set { p1 = value; } } public PointF P2 { get { return p2; } set { p2 = value; } } public float X1
2 2024-04-13
编程技术问答社区
在有多个碰撞器的游戏对象上找到参与碰撞的两个碰撞器
总结以下内容: 我想从一个ontriggerenter2d事件中找到涉及碰撞的两个山脉.我该怎么做? 我有两个GameObject.两者都有一个对撞机和触发器. 在对象A上,它被扳机包围.在对象B上,扳机仅包围特定部分. 当对象A的触发触发对象B:我希望对象B失去健康时.反之亦然. 但是,当对象A的触发触发对撞机B(而非触发)B时,两个对象都会失去健康. 我在控制台 中得到了这个 Object A hit Object B Object B hit Object A 我得出的结论是,对象A的触发器在对象b. 上调用ontrigger2d事件 我认为最好的方法是找到哪个对撞机"发现"碰撞,并取决于:忽略碰撞. 我如何找到碰撞的触发器? [也发布在Unity论坛上] 编辑:代码 private void OnTriggerEnter2D(Collider2D collision) { Consumeable con =
0 2024-04-12
编程技术问答社区
我如何在C#中绘制简单的图形?
我只想在C#中绘制简单的2D对象,例如圆,线,正方形等.我怎么做?回到Turbo C ++天,我记得初始化了一些图形库进行的.我需要在.NET中做类似的事情吗? 3D对象有什么不同吗?诸如DirectX之类的东西会使这更容易吗?与教程或样本的任何链接都非常感谢. 解决方案 正如其他人所说的,请查看 system.drawing . (我只是重复这一点以使其完整. > gdi+ Windows Draws库到您的应用程序. A good tutorial to get you jump-started with System.Drawing and GDI+ can be found at c#c​​orner . 一些要注意的重要项目: 许多GDI+对象实现了IDisposable接口,因此应包裹在using块中.确保您遵循适当的处置约定;无法处理GDI+对象可能会给您的应用带来真正令人讨厌的副作用. (.NET中的GDI+对象对应于它们的基础Windows A
0 2024-04-12
编程技术问答社区
2D游戏物理学的资源
我正在寻找一些很好的参考,以学习如何在游戏中建模2D物理.我不是寻找图书馆为我做的 - 我想思考和学习,而不是盲目地使用别人的作品. 我已经做了很多谷歌搜索,虽然我在Gamedev等上找到了一些教程,但我发现他们的教程很难理解,因为它们要么写得不好,要么假设一定程度的数学理解我还没有. 有关细节 - 我正在寻找如何建模自上而下的2D游戏,有点像坦克战斗机游戏 - 我想准确地建模(除其他外)加速度和速度,热量堆积了"组件", '模型和水平边界之间的碰撞以及导弹型武器. 网站,推荐书籍,博客,代码示例 - 如果他们有助于理解,则欢迎所有这些.我正在考虑使用C#和F#来构建我的游戏,因此以任何两种语言中的任何一种代码示例都很棒 - 但不要让语言阻止您发布良好的链接. =) edit :我不是说我不了解数学 - 更多的是我不知道需要了解的内容以了解所涉及的系统,并且不知道'真的知道如何找到以可理解的方式教我的资源. 解决方案 这是几年前我组装的一些资源.值得注意的
0 2024-04-12
编程技术问答社区
2d Array from text file c#
我有一个看起来像这样的文本文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 在10 x 10网格中. 使用C# 我需要获取文本文件并将其变成一个2D整数数组,以便我可以在独立级别上操纵整数.请帮助无法解决, 解决方案 String input = File.ReadAllText( @"c:\myfile.txt" ); int i =
0 2024-04-11
编程技术问答社区
淡入/淡出游戏对象
我是编码的新手,我仍在尝试开发思维的逻辑,以帮助我创建想要游戏的解决方案.目前,我正在统一试图创建一个2D GameObject,这是隐藏秘密门的墙.当玩家GameObject触发它,揭示后面的空间和隐藏的门时,我希望该游戏对象能够淡出(约90%). 到目前为止,我设法弄清楚了如何在扳机上渲染"秘密墙",因此它消失了,但这并不能产生我想要的视觉效果.就像我说的那样,我仍在努力开发该编码员的思维方式,因此,尽管我进行了大量研究来解决这个问题,但我不容易理解的许多结果. 这是我的代码: using System.Collections; using System.Collections.Generic; using UnityEngine; public class SecretDoor1 : MonoBehaviour { void OnTriggerEnter2D (Collider2D SecretDoorTrig) { if (Secr
0 2024-04-10
编程技术问答社区
在网格布局中创建动态按钮-创建一个神奇的方形UI
我应该使用Windows Forms应用程序在2D中创建一个魔术正方形.看起来应该这样: 但是,用户应该能够决定正方形的大小(3x3、5x5、7x7等).我已经在控制台应用程序中写了代码,但是我不知道如何添加2D图形. 有人已经问了这个问题(结果是GUI?),答案之一是使用DataGridView,但是我不确定这是我想要的,因为我无法使其看起来像图片. 有什么想法或建议吗? 解决方案 您可以使用 TableLayoutPanel ,并动态地添加按钮. 如果您不需要与按钮的互动,则可以添加Label. 动态创建正方形: public void CreateSquare(int size) { //Remove previously created controls and free resources foreach (Control item in this.Controls) { this.Contro
0 2024-04-10
编程技术问答社区
C, 多维数组练习
我对2D阵列的理解是错误的.因此,我将以另一种方式解决这个问题.说我有以下变量. int student_id[10], course_id[5]; int student_course[10][2]; 只有10名学生.只能有5门课程.学生只能参加2门课程. /*prompt user for student id*/ /* say that the value for: student_id[0]=123 */ /*prompt user for course id*/ /* say that the value for: course_id[0]=101 course_id[1]=102 course_id[2]=103 course_id[3]=104 course_id[4]=105 */ 我想打印的是 student_course[value_of_student_id][value_of_course_id]. 所以我想这样做: i
0 2024-04-10
编程技术问答社区
如何在C语言中向二维数组添加一个字符串
我开始学习C,并且遇到了将字符串输入添加到2D数组的问题,我能够正确获取字符串输入,但是当我尝试将字符串元素添加到数组中时,按预期工作.当打印数组(这是我测试程序的方式)时,它将在数组中为每个字符而不是整个字符串分配每个索引. 这是我观看的代码,非常感谢您感谢您发布的任何帮助. #include main() { char c_array[3][3]; int x; int y; int z=10; int i_user_input; char c_name[256]; for(x=0;x
2 2024-04-10
编程技术问答社区
用字符串中的字符填充 2D ARRAY
我试图用字符串中的一些选定字符填充数组. 2列必须保持空,但这就是它对我有用的方式.每个符号应等于行数.喜欢球排序游戏..一些建议?谢谢. void generator(const int rows, const int columns, char field[rows][columns]){ // seed srand(time(NULL)); int random_index; // choosing empty columns (they'll be by side) int clear_column[2]; // choosing random number in range of columns clear_column[0] = rand() % (columns+1); // adding +1 index to already choosen number clear_column[1]
0 2024-04-09
编程技术问答社区
2d动态数组(C语言),有特定的行数,每行有不同的列大小
如何制作一个具有特定行号和不同列大小的2D动态数组(在C中)? 例如: 这是一个数组(3 =行) |1 | 4 | 5 | |3 | |6 | 2 | 第一行-3列 第二行-1列 第三行-2列 我希望我的程序在运行时要求用户每行提供COLS的数量. 我如何制作这样的数组? 解决方案 您可能想要的是使用指针指针并为每行分配足够的内存.示例: int ** array = calloc(sizeof(*array), NUMROWS); array[0] = calloc(sizeof(**array), 3); // 3 fields array[1] = calloc(sizeof(**array), 1); // 1 field array[2] = calloc(sizeof(**array), 2); // 2 fields 其他解决方案 如果您想要动态的东西并且不在乎持续的访问时
0 2024-04-09
编程技术问答社区
线性插值:根据二维表计算出修正值
我尝试做一个应该只是二维线性插值的事情,但目前我无法找到正确的方法.为了简化问题:有一个大小为3000x3000像素的绘图区域,我必须绘制例如水平线.为此,我正在绘制从每个像素位置到下一个像素位置的点或短行,然后形成一条线. 现在,必须对整个内容进行校正,在整个过程中,可以在A(简化此示例)中找到校正信息4 x 4数组,其中每个元素都包含一对坐标,描述了校正后的值.因此,中性阵列(无校正)看起来像这样: 0,0 1000,0 2000,0 3000,0 0,1000 1000,1000 2000,1000 3000,1000 0,2000 1000,2000 2000,2000 3000,2000 0,3000 1000,3000 2000,3000 3000,3000 真正的校正表将包含描述要完成的校正的其他坐标: 因此,作为输入数据,我在行上具有点上的点坐标,而无需校正,字段值没有校正和校正数据.
0 2024-04-09
编程技术问答社区
二维/多维数组的MEMORY MAP
任何人都可以在视觉上解释 如何将2D数组存储在内存中为: a,&a [0],a [0]都有相同的地址... 这似乎是一个指向自己的指针……这是不对的... 这已经困扰着我将近一年,并且在网上搜索也使我没有恰当的答案.....帮助非常感谢.... enter code here #include int main() { int a[2][3]={10,20,30,40,50,60}; int row =0,col=0; printf("&a = %d ",&a); printf("\na = %d ",a); printf("\n&a[0] = %d ",&a[0]); printf("\na[0] = %d ",a[0]); printf("\n&a[1] = %d ",&a[1]); printf("\na[1] = %d ",a[1]); printf("\n&a[0][0]
0 2024-04-09
编程技术问答社区
打印多个二维字符数组的变体C函数
我需要在C中设置一个variadic函数,该函数并排打印可变数量的2-char数组.我很难弄清楚如何使用va_arg()> 初始化boards变量. 关键有问题的行是:boards[i] = va_arg(ap, char*[][BOARDSIZE]);该行会产生编译器错误(当前,Second argument to 'va_arg' is of incomplete type 'char *[][10]'),但基本上我确定我没有做正确的事情.我只是不确定那是什么.我尝试了几种变体,但无济于事.代码的其余部分应该可以. (预先感谢您的任何帮助.) #include #include #define BOARDSIZE 10 void showBoardVariadic(int numArgs, ...) { va_list ap; va_start(ap, numArgs); // Assign a
0 2024-04-09
编程技术问答社区
C语言的二维傅里叶变换
我使用此站点的方程式实现了2D DFT和IDFT http://homepages.inf.ed.ac.ac.ac.ac.ac.uk/rbf/hipr2/fourier.htm 我认为这些是正确的,可以很好地解释. 实施看起来像: for(int i=0;i
0 2024-04-09
编程技术问答社区