Tag: math

在Javamath组合'NselectR'?

有一个Java库中的内置方法,可以计算'NselectR'的任何N,R?

如何在整数除法和int结果在Java?

我刚刚写了一个很小的方法来计算手机短信的页数。 我没有select使用Math.ceil ,老实说,这似乎是非常丑陋的。 这是我的代码: public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { String message = "today we stumbled upon a huge performance leak while optimizing a raycasting algorithm. Much to our surprise, the Math.floor() method took almost half of the calculation time: 3 floor […]

WebGL和ThreeJS中改进的区域照明

我一直在研究与WebGL相似的区域照明实现: http://threejs.org/examples/webgldeferred_arealights.html three.js中的上述实现已经从gamedev.net上的ArKano22的工作中移出: http://www.gamedev.net/topic/552315-glsl-area-light-implementation/ 虽然这些解决scheme非常令人印象深刻,但它们都有一些限制。 ArKano22最初实现的主要问题是漫射项的计算不考虑曲面法线。 我几个星期以来一直在扩充这个解决scheme,通过redPlant的改进来解决这个问题。 目前我有正常的计算纳入解决scheme,但结果也有缺陷。 这是我目前实现的一个预览: 介绍 计算每个片段的漫射项的步骤如下: 将顶点投影到区域光线所在的平面上,以使投影的vector与光线的法向/方向一致。 通过比较投影向量和光的法线,检查顶点是否在区域光平面的正确的一侧。 计算平面上该投影点从光源中心/位置的二维偏移量。 钳位这个二维偏移vector,使它位于光线区域内(由其宽度和高度定义)。 导出投影和钳位的2D点的3D世界位置。 这是顶点上的最近点 。 通过取顶点到最近点向量(归一化)和顶点法线之间的点积来执行通常的漫reflection计算。 问题 这个解决scheme的问题在于,照明计算是从最近的点完成的,并且不考虑灯表面上的其他点可能更多地照亮片段。 让我试着解释为什么… 考虑下图: 面光既垂直于表面又与其相交。 表面上的每个碎片将始终返回表面和光线相交处的区域光线上的最近点 。 由于曲面法线和顶点 – 光线vector总是垂直的,它们之间的点积是零。 随后,尽pipe在表面上有大面积的光线,漫射贡献的计算是零。 潜在的解决scheme 我build议,不要从面积光线上的最近点计算光线,而是从面积光点上计算顶点到光线vector(归一化)和顶点法线之间的最大点积。 在上图中,这将是紫色点,而不是蓝色点。 帮帮我! 所以,这是我需要你的帮助。 在我的脑海里,我对这个观点是如何得出的有一个很好的想法,但是没有达到解决的math能力。 目前我在片段着色器中有以下信息: 顶点位置 顶点法线(单位vector) 光的位置,宽度和高度 光正常(单位vector) 轻右(单位vector) 点亮(单位vector) 投影点从顶点到灯光平面(3D) 距离灯光中心的投影点偏移量(2D) 夹持偏移(2D) 这个夹持偏移的世界位置 – 最近点 (3D) 为了将所有这些信息放到一个可视的上下文中,我创build了这个图(希望它有帮助): 为了testing我的build议,我需要在由红点表示的区域灯光上的投射点,以便在顶点到投射点(标准化)和顶点法线之间执行点积。 再次,这应该产生最大可能的贡献值。 UPDATE! 我已经在CodePen上创build了一个交互式的草图,它可视化我目前已经实现的math: […]

关联性math:(a + b)+ c!= a +(b + c)

最近,我正在浏览Eric Lippert的一篇旧博客文章,他在写关于关联性的文章时提到,在C#中, (a + b) + c对a,b的某些值不等于a + (b + c) , C。 我无法弄清算术值的types和范围可能是真的,为什么。

计算2Dvector的交叉产品

从维基百科: 叉积是在三维欧几里得空间中的两个向量上的二元运算,其导致与包含两个input向量的平面垂直的另一向量。 鉴于定义只定义在三个( 或七个,一个和零 )维度,如何计算两个二维向量的叉积? 我见过两个实现。 一个返回一个新的向量(但只接受一个向量),另一个返回一个标量(但是是两个向量之间的计算)。 实现1(返回一个标量): float CrossProduct(const Vector2D & v1, const Vector2D & v2) const { return (v1.X*v2.Y) – (v1.Y*v2.X); } 实现2(返回一个向量): Vector2D CrossProduct(const Vector2D & v) const { return Vector2D(vY, -vX); } 为什么不同的实现? 我将使用什么标量实现? 我会用什么vector实现? 我问的原因是我自己写了一个Vector2D类,不知道要使用哪种方法。

Java使用Math.ceil四舍五入为int

int total = (int) Math.ceil(157/32); 为什么它仍然返回4? 157/32 = 4.90625 ,我需要四舍五入,环顾四周,这似乎是正确的方法。 我total尝试了doubletypes,但得到4.0。 我究竟做错了什么?

我如何确定C中的整数位数?

例如, n = 3432, result 4 n = 45, result 2 n = 33215, result 5 n = -357, result 3 我想我可以把它变成一个string,然后得到string的长度,但似乎令人费解和hack-y。

不要在情节轴上使用科学记数法

我经常使用plot命令在R中做各种各样的散点图。 有时候,有时候只有一个坐标轴被标以科学记数法。 当R决定转用科学记数法时,我不明白。 令人惊讶的是,它通常打印的数字不会在科学记数法中用科学记数法写出,例如标记为5e + 00。 假设你的对数轴高达1000,科学记数法对于这样的“小”数是不合理的。 我想压制这种行为,我总是希望R显示整数值。 这可能吗? 我试过options(scipen=10)但它开始写5.0而不是5,而在另一个轴5仍然是5等等。我怎么可以在我的R图的纯整数值? 我在Windows 7上使用R 2.12.1。

为什么FFT产生复数而不是实数?

即使algorithm的input是一组离散的实数(整数),我们所遇到的所有FFT实现都会导致复值(包含实部和虚部)。 仅用实数来表示频域是不可能的?

为什么程序不能被certificate?

为什么计算机程序不能像math声明那样被certificate? mathcertificate是build立在其他certificate上的,这些certificate是由更多的certificate和公理构成的 – 那些真理我们认为是真实的真理。 计算机程序似乎没有这样的结构。 如果你写一个计算机程序,你怎么可以采取以前certificate的作品,并用它们来显示你的程序的真相? 你不能存在。 此外,编程的公理是什么? 该领域的primefaces真理? 上面我没有很好的答案。 但似乎软件不能被certificate,因为它是艺术而不是科学。 你如何certificate毕加索?