首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >建立距离和损伤公式

建立距离和损伤公式
EN

Stack Overflow用户
提问于 2013-08-12 19:25:33
回答 3查看 143关注 0票数 0
代码语言:javascript
复制
    public double getDamage(double distance){
        int damage1 = 30; // (0 - 38.1)
        int damage2 = 20; // (50.8 - *)
        double range1 = 38.1;
        double range2 = 50.8;

        double damage = 0; // FORMULA

        return damage;
    }

我试图创建一个公式来计算受距离影响的损失量。

(可变距离=) 0至38.1米,将造成30点伤害。

50.8到Inifite,它将返回20点伤害。

38.1至50.8前,直线下降30 -> 20。

我怎样才能使这个方法起作用?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-12 19:34:04

听起来像这样:

代码语言:javascript
复制
double x = (distance - range1) / (range2 - range1);
if (x < 0)
  x = 0;
if (x > 1)
  x = 1;
return damage1 + x * (damage2 - damage1);

基本上,您遵循一个线性规则,并调整,以保持您的线性间隔。

票数 1
EN

Stack Overflow用户

发布于 2013-08-12 19:30:00

看起来你想要一个步长公式,而不是线性公式。Step公式基本上是一堆if -否则,如果代码比较。就像这样:

代码语言:javascript
复制
public double getDamage(double dist){
    if (0 < dist & dist < 38.1)
        return 30;
    else if ( 38.1 < dist & dist < 50.8 )
        return 30 - dist/10;
    else 
        return 

}

编辑:刚刚看到你确实希望它在38.1到50.8之间线性。使用类似的返回值30-Dist/10;dist/10会给您造成27到23的伤害,您需要自己找到一个合适的常量(而不是10)。(这很容易,因为y= mx +b,根据条件(38.1,30)和(50.8,20)有两点)。把它们分解成y= mx+b,你就会得到第二个公式-如果。

票数 0
EN

Stack Overflow用户

发布于 2013-08-12 19:56:48

您正在寻找的公式是点斜率方程y= m(x-x1) + y1方程的一个简单变化,其中m= (damage1 - damage2)/(range1 - range2),x1 = range1,y1 = damage1,x是可变距离。

代码语言:javascript
复制
public double getDamage(double distance){
    int damage1 = 30;
    int damage2 = 20;
    double range1 = 38.1;
    double range2 = 50.8;

    double damage = 0;
    if(0 <= distance && distance <= range1)
        damage = damage1;
    else if (range1 < distance && distance < range2)
        damage = (damage1 - damage2)/(range1 - range2) * (distance - range1) + damage1;
    else if (distance >= range2)
        damage = damage2;

    return damage;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18195094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档