热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AS3-Y速度6.123031769111886E-17-AS3-YVelocity6.123031769111886E-17

Whengiven0,0to0,5,theyvelocitybecomesthatnumberandbreaksmycode.IknowImusthavedon

When given 0,0 to 0,5, the y velocity becomes that number and breaks my code. I know I must have done something wrong as I just copy and pasted code (since I am horrible at maths)..

当给定0 0到0 5时,y速度就变成了这个数并破坏了我的代码。我知道我一定做错了什么,因为我只是复制和粘贴代码(因为我数学不好)。

This is how I calculate the numbers:

这就是我计算数字的方法:

var radian = Math.atan2(listOfNodes[j].y - listOfNodes[i].y,listOfNodes[j].x - listOfNodes[i].x);
var vy = Math.cos(radian);
var vx = Math.sin(radian);

Thanks

谢谢

1 个解决方案

#1


5  

There i am assuming the velocity vector is FROM 0,0 TO 0,5. And 0,0 is i and 0,5 is j.

我假设速度向量是从0到0 5。0 0是i 5是j。

In that case the velocity vector is only along y and the y component should be 5 and x component 0. It is coming as opposite because,

在这种情况下,速度矢量只沿y方向,y分量应该是5,x分量是0。因为,

cos(radian) whould be x velocity component and sin(radian) the y compunent.

因为(radian)应该是x速度分量,sin(radian)是y的compunent。

And the number 6.123031769111886E-17 is actually returned in place of 0.

而数字6.123031769111886E-17实际上返回的是0。

Look at the following figure:
enter image description here

请看下图:

Also as can be seen from the figure you do not need the trigonometric computations at all.
You can simply get the x and y components as follows:

同样,从图中可以看出,你根本不需要三角计算。你可以简单地得到x和y分量如下:

// y2 - y1
var vy = listOfNodes[j].y - listOfNodes[i].y;
// x2 - x1
var vx = listOfNodes[j].x - listOfNodes[i].x;

This will avoid the floating point inaccuracy caused by the trig finctions due to which you are seeing 6.123031769111886E-17 instead of 0.
You only need to use atan2 if you actually need the angle θ in your code.

这将避免由trig finctions引起的浮点不准确,因为您看到的是6.123031769111886E-17而不是0。你只需要使用量化如果你真的需要角θ在您的代码中。

Update: Well if you need only unit (normalized) vector's components you can divide the vx and vy with the length of the original vector. Like this:

更新:如果你只需要单位(归一化)向量的分量,你可以用原向量的长度除以vx和vy。是这样的:

// y2 - y1
var vy = listOfNodes[j].y - listOfNodes[i].y;
// x2 - x1
var vx = listOfNodes[j].x - listOfNodes[i].x;
// vector magnitude
var mag = Math.sqrt(vx * vx + vy * vy);

// get unit vector components
vy /= mag;
vx /= mag;

Using the above you will get the exactly the same results as you are getting from trig sin and cos functions.

用上面的方法你会得到和三角函数sin和cos函数一样的结果。

But if you still need to use the original code and want to make 6.12...E-17 compare to 0, you can use the epsilon technique for comparing floats. So you can compare any value within epsilon's range from 0, using flllowing code:

但是,如果您仍然需要使用原始代码,并希望制作6.12……E-17与0相比,你可以使用epsilon技术来比较浮点数。因此,你可以使用flllowing代码来比较epsilon范围内的任何值:

function floatCompare(a:Number, b:Number, epsilon:Number):Boolean{
    return (a >= (b - epsilon) && a <= (b + epsilon));
}
// To check for zero use this code, here i'm using 0.0001 as epsilon
if(floatCompare(vx, 0, 0.0001)){
    // code here
}

So any deviation in the range of [b-epsilon, b+epsilon] would successfully compare to b. This is essential in case of floating point arithmetic.

因此,在[b, b+]范围内的任何偏差都可以成功地与b进行比较,这在浮点运算中是很重要的。


推荐阅读
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 本文将探讨2015年RCTF竞赛中的一道PWN题目——shaxian,重点分析其利用Fastbin和堆溢出的技巧。通过详细解析代码流程和漏洞利用过程,帮助读者理解此类题目的破解方法。 ... [详细]
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 本文通过Python代码示例,详细介绍了如何在100至1000的数字区间内搜索并识别水仙花数,即那些等于其各个位数立方和的特殊三位数。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 本文介绍了如何在iOS应用中自定义导航栏按钮,包括使用普通按钮和图片生成导航条专用按钮的方法。同时,探讨了在不同版本的iOS系统中实现多按钮布局的技术方案。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
author-avatar
mobiledu2502935431
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有