Tag: math

计算表面包含4个点的球体中心(C#)

我正在使用名为MIConvexHull的3D Voronoi库,它为3D空间中的一系列点计算3D Voronoi图。 但是,它没有提供有关Voronoi图结构的高级信息; 报告的边是简单的坐标对列表,然后必须计算圆周。 现在,该库提供了一系列2D点的圆周计算的实现。 如您所见,显示了开始(橙色)和结束(绿色)的坐标对: 您可以直观地看到,如果您获取每个边缘中列出的顶点并创建一个圆形,使得该圆的圆周接触所有边缘,则中心就是边缘开始的位置。 我遇到的问题是我的点是3D,因此它不会是返回的圆心,而是球体的中心。 不幸的是,高级数学不是我的脑袋能够真正处理好的,所以我不知道如何解决这个问题。 如果给出3D空间中的4个点,我是否可以获得球体的中心,使得所有点都位于球体的表面上? 编辑:在3D中,将提供4个点,而不是3个。

XNA – Pong Clone – 当它击中墙壁时reflection球?

我正在尝试在创建2D Pong Clone时让球从我的UI的顶部和底部“Walls”反弹。 这是我的Game.cs public void CheckBallPosition() { if (ball.Position.Y == 0 || ball.Position.Y >= graphics.PreferredBackBufferHeight) ball.Move(true); else ball.Move(false); if (ball.Position.X = graphics.PreferredBackBufferWidth) ball.Reset(); } 目前我在Ball.cs中使用它 public void Move(bool IsCollidingWithWall) { if (IsCollidingWithWall) { Vector2 normal = new Vector2(0, 1); Direction = Vector2.Reflect(Direction,normal); this.Position += Direction; Console.WriteLine(“WALL COLLISION”); } else this.Position += Direction; } 它工作,但我使用手动键入正常,我想知道如何计算屏幕顶部和底部的法线?

64位定点乘法错误

我在C#中实现了一个64位定点签名的31.32数字类型,基于long 。 到目前为止,添加和减法都很好。 然而,乘法有一个我想要解决的烦人的情况。 我当前的算法包括将每个操作数分成最高和最低有效32位,执行4次乘法到4个长度并添加这些长度的相关位。 这是代码: public static Fix64 operator *(Fix64 x, Fix64 y) { var xl = x.m_rawValue; // underlying long of x var yl = y.m_rawValue; // underlying long of y var xlow = xl & 0x00000000FFFFFFFF; // take the 32 lowest bits of x var xhigh = xl >> 32; // take […]

生成多项式评估的方法

我试图想出一种优雅的方法来处理一些生成的多项式。 以下是我们将(专门)关注此问题的情况: order是生成n阶多项式的参数,其中n:= order + 1。 i是0..n范围内的整数参数 多项式在x_j处有零,其中j = 1..n且j≠i(此时应该清楚StackOverflow需要一个新特性或它存在并且我不知道它) 多项式在x_i处求值为1。 由于此特定代码示例生成x_1 .. x_n,我将解释它们是如何在代码中找到的。 这些点均匀间隔x_j = j * elementSize / order apart,其中n = order + 1 。 我生成一个Func来评估这个多项式¹。 private static Func GeneratePsi(double elementSize, int order, int i) { if (order < 1) throw new ArgumentOutOfRangeException("order", "order must be greater than 0."); if (i order) throw […]

c#中的工作百分比

我有两个值,一个带有十进制值,另一个值带有一个值,用于计算该十进制值的百分比,例如: 60%的10 = 6 decimal value1 = 10; decimal percentage = 60; textbox1.text = (“mathsum here”).toString(); 如何使用包含百分比值的十进制值和值来计算此值?

将非常大的数字转换为基数10字符串

一个整数测量4个字节。 在我的例子中,我的数字为1 MB。 如何快速将它们转换为人类可读的十进制数? 该数字出现在包含Size项的uint[]数组中。

如何在C#中乘以两个矩阵?

就像在标题中描述的那样,Microsoft框架中是否有一些库允许将两个矩阵相乘或者我是否必须编写自己的方法来执行此操作? //我现在已经得到了答案 第二个问题:我使用MultiplyMatrix方法编写了这个多类,但它并不像我想的那样工作。 任何人都可以帮忙告诉我哪里弄错了吗? class multi { public void MultiplyMatrix(double[,] _A, double[,] _B, int _n, int _m, int _r) { int n, m, r; double si; n = _n; m = _m; r = _r; double[,] A = new double[n, m]; double[,] B = new double[m, r]; double[,] C = new double[n, r]; A = […]

C#中用于3D数学的好库?

我正在编写一个工具,用于处理一堆3D数据,像旋转对象,翻译,缩放和所有好东西。 有没有人知道一个好的图书馆已经做了一些常见的3D东西? 我对目前数据的可视化不感兴趣,并且主要对执行操作感兴趣。 我知道在这一点上我需要的东西: 2D / 3D / 4D向量 (加,减,点积,叉积等……) 使用矩阵进行旋转/平移/缩放 四元 我能够找到Sharp3D库,但它似乎可以做我想要的但是很长时间没有更新。 以前有人用过吗? 还有其他(更好的)建议吗?

BigInteger.ModPow()的替代品; 在C#中

我正在寻找.NET 4.x引入的C#BigInteger包的替代品。 使用这个对象的数学运算速度非常慢,我想这是因为算术是在比原始类型更高的层次上完成的 – 或者是非常优化的,无论如何。 Int64 / long / ulong或其他64位数字是小的,不会正确计算 – 我说的是64位整数到64位整数的幂。 希望有人可以建议我的东西。 提前致谢。

如何将平面上的3D点转换为UV坐标?

我有一个3d点,由[x0, y0, z0] 。 该点属于由[a, b, c, d]定义的平面。 normal = [a, b, c]和ax + by + cz + d = 0 如何将3d点转换或映射到一对(u,v)坐标? 这一定非常简单,但我无法弄明白。