Tag: 数学

三角形 – 三角交点测试

我想知道是否有一些教程或指南来理解和实现3D环境中的三角形 – 三角形交叉测试。 (我不需要知道交叉点发生的确切位置,但只知道交叉点已经发生) 我打算按照理论的pdf来实现它,但我很沮丧 三角形的计算平面方程2。 如果三角形1的所有点都在同一侧,则拒绝为微不足道。 三角形的计算平面方程1。 如果三角形2的所有点都在同一侧,则拒绝为微不足道。 计算交叉线和项目到最大轴。 计算每个三角形的间隔。 相交间隔。 本指南的第5点。 我真的不知道在问什么(所有5,6和7)。 XD 因为我没有很高的数学知识(好吧,我知道大学的几门考试给了我(我是一名原始程序员XD)),请尽量让我尽可能简单。 :D(我试图在谷歌搜索,但大多数链接指向大约4-5页的公式,我真的不知道,我不明白。) 谢谢您的帮助

在圆上转录多边形

我目前正试图在圆圈内刻上十边形的对角线 像这样 在c#中我的方法是创建一个圆圈 e.Graphics.DrawEllipse(myPen, 0, 0, 100, 100); 并在里面画线 e.Graphics.DrawLine(myPen, 20, 5, 50, 50); 之后我会绘制一个十边形多边形。 目前我坚持如何将圆分为10个部分/找到圆周上点的正确坐标,因为我的数学不好,我想知道我怎么知道圆的圆周中的下一个点我圈子的大小如上所示。 而且我也想问一个更好的方法来解决我的问题。 谢谢 :)

将可变大小的项目平衡为粗略平衡的集合的算法

我正在寻找一种算法,将不同大小的项目列表分成“N”个类似大小的组。 具体来说,我正在使用C#中的ASP.NET站点,其中有一个(数据库检索的)字符串列表。 琴弦的长度各不相同。 我有一组需要显示字符串的列。 我需要一种算法来找到最平衡的集合(项目顺序无关紧要),以允许最终的列尽可能平衡。 抽象示例: 创建3列。 要分发的项目: – Item A – height 5 – Item B – height 3 – Item C – height 7 – Item D – height 2 – Item E – height 3 期望的输出: Column 1: Item A, Item D Column 2: Item C Column 3: Item B, Item E

C#中的标准正态分布z值函数

我一直在看Jeff Atwood最近关于Alternate Sorting Orders的博客文章。 我试图将post中的代码转换为C#,但我遇到了一个问题。 我知道.NET中没有函数会返回z值,给定标准法线曲线下面积的百分比。 用于算法的建议值为95%和97.5%,您可以在任何统计手册的z值表中查找。 有没有人知道如何为z的所有值或至少与平均值的6个标准差实现这样的函数。 一种方法是将值硬编码到字典中并使用查找,但必须有一种计算确切值的方法。 我尝试解决这个问题的方法是采用标准正态曲线函数的定积分。 y =(1 /(sqrt(2 * PI)))* e ^( – (1/2)* x ^ 2) 这给了我两个x值之间的曲线区域,但后来我被卡住了…也许我是基础的方式,这不是你怎么做的? 谢谢。

将表达式从文本框转换为代码背后的数学表达式

可能重复: 我需要一个快速的运行时表达式解析器 如果有人在我的页面上的文本框中输入x * y ^ z来计算后面代码中的等式并得到结果,我怎么做呢?

如何在不存储卡片的情况下实施经销商类别?

题 即使只有52张牌,我在“ 解释”部分描述的permutationIndex也是一个巨大的数字; 它是52!一个数字52! ,需要29个字节来存储。 因此, 我不知道计算大范围的permutationIndex的简单方法 ,并以最小成本存储索引,或者也可以计算它。 我在想这个问题的解决方案是三种算法: 一种算法,它计算正确的permutationIndex来实现Dealing方法 一种计算正确permutationIndex以实现Collect方法的算法 一种以最小成本存储(或计算) permutationIndex的算法 说明 我最初尝试使用置换实现一个范围从int.MinVale到int.MaxValue的整数句柄生成器 。 因为范围非常大,所以我从实现一个Dealer类开始, 有52张卡,它们并不真正存储像hashset或array这样的卡片组,甚至不需要随机 (初始除外)。 对于给定范围的序数,我认为其中一个完整排列的每个序列都有一个索引,并将其命名为permutationIndex 。 我使用索引来记住它是哪个排列而不是真正存储序列。 序列是卡片组的可能顺序之一。 这里有一个动画图形模拟示例,以显示我的想法。 每次我发卡时,我都会更改permutationIndex并dealt (已发卡的数量),我知道哪些卡是那些卡,哪些卡还在手中。 当我收回已发卡时,我会知道卡号,并将其放在顶部,它也会成为下次交易的卡。 在动画中, colleted是卡号 。 有关更多信息,请按以下方式 代码说明 仅有三个3的概念样本Dealer类如下。 代码是用c#编写的,我也在考虑任何与语言无关的解决方案。 以下是示例代码的一些描述 使用Dealing()方法,我们得到一些处理的卡片。 它总是返回最右边的数字(与数组相关),然后通过更改permutationIndex将其左边的数字(比如下一个可用的数字)滚动到最右边的位置。 方法Collect(int)用于收集并将处理后的卡片放回到牌组中。 它会改变permutationIndex ,根据卡的数量返回给经销商。 dealt的整数表示我们dealt了多少张牌; 从最左边到存储在dealt中的计数都是发牌。 使用permutationIndex ,我们知道卡的顺序。 不使用示例代码中的int[,]数组,只是为了帮助设想排列。 switch语句被认为是用计算permutationIndex算法实现的。 permutationIndex与此答案中描述的内容相同 快速置换 – >数字 – >置换映射算法 示例代码 public static […]

将范围内的数字转换为另一范围内的数字

可能重复: 将数字范围转换为另一个范围,保持比率 所以我有一个函数返回0和255之间的值,我需要将这些值转换为介于-255和255之间的东西所以200大约是145,150大约是45,依此类推..我看过转换一个数字范围到另一个范围,保持比例但公式不起作用。 我可以使用的任何其他公式?

C#中的立方/曲线平滑插值

下面是一个三次插值函数: public float Smooth(float start, float end, float amount) { // Clamp to 0-1; amount = (amount > 1f) ? 1f : amount; amount = (amount < 0f) ? 0f : amount; // Cubicly adjust the amount value. amount = (amount * amount) * (3f – (2f * amount)); return (start + ((end – start) […]

四元数到欧拉角算法 – 如何转换为’Y =向上’和用手之间?

我有一个在四元数和欧拉角之间转换的算法。 public static Vector3 ToEulerAngles(this Quaternion q) { // Store the Euler angles in radians Vector3 pitchYawRoll = new Vector3(); double sqw = qW * qW; double sqx = qX * qX; double sqy = qY * qY; double sqz = qZ * qZ; // If quaternion is normalised the unit is one, otherwise it […]

如何获得最接近给定点的三次贝塞尔曲线?

给出n分: p0,p1,p2,…,pn; 如何得到点c1,c2以便定义的三次贝塞尔曲线 p0,c1,c2,pn 最接近给定点? 我试过最小二乘法。 我在http://www.mathworks.com/matlabcentral/fileexchange/15542-cubic-bezier-least-square-fitting上阅读pdf文档后写了这篇文章。 但我找不到一个好的t(i)function。 using System; using System.Collections.Generic; using System.Linq; using System.Windows; namespace BezierFitting { class CubicBezierFittingCalculator { private List data; public CubicBezierFittingCalculator(List data) { this.data = data; } private double t(int i) { return (double)(i – 1) / (data.Count – 1); // double s = 0.0, d = 0.0; // […]