Tag: math

围绕一个双重的X有效数字

如果我有一个double(234.004223)等,我想在C#中将其舍入为x个有效数字。 到目前为止,我只能find方法来四舍五入到小数点后的位置,但是这只是在数字中有0的情况下删除精度。 例如,小数点后一位0.086变为0.1,但我希望保持在0.08。

计算两条线之间的angular度而不必计算斜率? (JAVA)

我有两条线:L1和L2。 我想计算两条线之间的angular度。 L1的点为{(x1, y1), (x2, y2)} ,L2的点为{(x3, y3), (x4, y4)} 。 我怎样才能计算这两条线之间形成的angular度,而不必计算斜率? 我现在遇到的问题是,有时候我有水平线(x轴线),下面的公式失败(除以零例外): arctan((m1 – m2) / (1 – (m1 * m2))) 其中m1和m2分别是线1和线2的斜率。 是否有一个公式/algorithm可以计算两条线之间的angular度,而不会得到零除exception? 任何帮助将不胜感激。 这是我的代码片段: // Calculates the angle formed between two lines public static double angleBetween2Lines(Line2D line1, Line2D line2) { double slope1 = line1.getY1() – line1.getY2() / line1.getX1() – line1.getX2(); double slope2 = […]

实施射线拾取

我有一个使用DirectX和OpenGL的渲染器和一个3D场景。 视口和窗口具有相同的尺寸。 我如何实现以平台独立的方式select给定的鼠标坐标x和y?

JavaScript中的快速因子函数

在JavaScript中寻找一个真正的快速实现阶乘函数。 有什么build议?

在C#中的定点math?

我想知道是否有人知道在C#中定点math的任何好资源? 我已经看到了这样的事情( http://2ddev.72dpiarmy.com/viewtopic.php?id=156 )和这个( 做定点math的最好方法是什么? ),还有一些讨论关于decimal是真正的固定点或实际浮点(更新:响应者已经确认,这是肯定的浮点),但我还没有看到像计算余弦和正弦的东西一个坚实的C#库。 我的需求很简单 – 我需要基本的操作符,加上余弦,正弦,arctan2,PI …我认为就是这样。 也许sqrt。 我正在编写一个2D RTS游戏,我主要工作,但是使用浮点运算(双精度)的单位运动在多个机器上随着时间的推移(10-30分钟)有很小的不准确性,导致desyncs。 目前这只是一个32位的操作系统和一个64位的操作系统之间,所有的32位机器似乎保持同步没有问题,这是什么让我觉得这是一个浮点问题。 我从一开始就意识到这是一个可能的问题,所以我尽可能地限制了对非整数位置math的使用,但是对于变化的速度下的平滑对angular线运动,我正在计算以弧度表示的点之间的angular度,然后用sin和cos获得运动的x和y分量。 这是主要问题。 我也对线段交点,线圆交点,圆弧交点等进行了计算,也可能需要从浮点移动到定点,以避免跨机器问题。 如果在Java或VB或其他类似的语言中有开源的东西,我可能会转换为我的使用代码。 我的主要优先考虑是准确性,尽pipe我希望尽可能less的速度损失。 这整个定点math的东西对我来说是非常新的,我很惊讶它在谷歌上的实用信息有多less – 大多数东西似乎是理论或密集的C ++头文件。 任何你可以做的事情指向正确的方向我非常感激; 如果我能得到这个工作,我打算开放我放在一起的math函数,这样就会有其他C#程序员的资源。 更新:我可以确定一个余弦/正弦查找表为我的目的工作,但我不认为这将适用于arctan2,因为我需要生成约64,000 x 64,000条目(yike)表。 如果你知道有效的方法来计算像arctan2这样的程序化的解释,那就太棒了。 我的math背景是好的,但先进的公式和传统的math符号很难转化为代码。

计算地理邻近度的公式

我需要在我的应用程序中实现Geo邻近search,但是我对使用正确的公式感到困惑。 在Web和StackOverflow中进行了一些search之后,我发现解决scheme是: 使用Haversine公式 使用大圆距离公式 在数据库中使用空间search引擎 选项#3真的不是我的ATM选项。 现在我有点困惑,因为我总是认为大圆距离公式和Haversine公式是同义词,但显然我错了? Haversine公式http://i46.tinypic.com/30shbn6.png 上面的屏幕截图是从真棒地理(邻近)searchMySQL文件,并使用以下function: ASIN, SQRT, POWER, SIN, PI, COS 我也看到了同样的公式 ( Cosines的球形定律 )的变化 ,像这样: (3956 * ACOS(COS(RADIANS(o_lat)) * COS(RADIANS(d_lat)) * COS(RADIANS(d_lon) – RADIANS(o_lon)) + SIN(RADIANS(o_lat)) * SIN(RADIANS(d_lat)))) 这使用以下function: ACOS, COS, RADIANS, SIN 我不是math专家,但这些公式是一样的吗? 我遇到了更多的变化和公式 (比如Cosines的球形定律和Vincenty的 公式 – 这似乎是最准确的),这让我更加困惑。 我需要select一个好的通用公式来在PHP / MySQL中实现。 任何人都可以解释我上面提到的公式之间的差异吗? 哪一个是最快的计算? 哪一个提供最准确的结果? 在结果的速度/准确性方面哪一个最好? 我感谢您对这些问题的洞察力。 基于唯一的理论答案,我testing了以下的大圆距离公式: Vincenty公式 Haversine公式 […]

我正在寻找一个简单的快速algorithmDCT和IDCTmatrix

我正在寻找一种简单的algorithm来执行任意大小的matrix[NxM]的快速DCT (types2)以及用于逆变换IDCT (也称为DCTtypes3)的algorithm。 我需要一个DCT-2Dalgorithm,但即使是一个DCT-1Dalgorithm也足够好,因为我可以使用DCT-1D来实现DCT-2D(和IDCT-1D来实现IDCT-2D)。 PHP代码是可取的,但任何足够清晰的algorithm都可以。 当前matrix大小大于[200×200]的我用于实现DCT / IDCT的PHP脚本非常慢。 我正在跳跃寻找一种方法来在不到20秒的时间内完成[4000×4000]的DCT。 有谁知道如何做到这一点?

C#:什么是最简单的方法来减去时间?

我试图把一个能帮助我制定工作时间表的工具放在一起。 什么是解决以下问题的最简单方法? 上午8:00 + 5小时=下午1:00 和 下午5点 – 2点=下午3点 和 5:30 pm – :45 = 4:45 等等。

从大小为n的列表中找出哪些数字总和为另一个数字的algorithm

我有一个十进制数(让我们称之为目标 )和一个其他十进制数字(让我们调用数组元素 )的数组,我需要find所有数组的元素 ,总结到目标。 我喜欢C#(.Net 2.0)中的解决scheme,但最好的algorithm可能会赢。 您的方法签名可能如下所示: public decimal[][] Solve(decimal goal, decimal[] elements)

如何testing随机性(例如 – Shuffling)

首先,这个问题是从这个问题中剔除的。 我这样做是因为我认为这部分比较长问题的一个子部分更大。 如果冒犯了,请原谅我。 假设你有一个产生随机性的algorithm。 现在你怎么testing它? 或者更直接 – 假设你有一套洗牌的algorithm,你怎么testing它是一个完全随机的algorithm? 给这个问题添加一些理论 – 一副牌可以在52中洗牌! (52阶乘)不同的方式。 拿一副牌,手工洗牌,记下所有牌的顺序。 你会得到这个洗牌的概率是多less? 答案:1/52! 在洗牌后,你有什么机会按顺序获得每套花色的A,K,Q,J …? 答案1/52! 所以,只要洗牌一次,看看结果就不会给你任何有关洗牌algorithm随机性的信息。 两次,你有更多的信息,三更甚至… 你将如何黑箱testing随机性洗牌algorithm?