游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4116|回复: 6

关于刷地形的算法

[复制链接]

82

主题

782

帖子

798

积分

高级会员

Rank: 4

积分
798
发表于 2008-5-17 08:23:00 | 显示全部楼层 |阅读模式
大家好。
我目前要做一个刷地行的软件,请问谁可以支援一个源程序?或者告诉我到哪可以学?基本原理是什么?
谢谢。
[em6]

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-5-17 10:35:00 | 显示全部楼层

Re:关于刷地形的算法

这几天刚做完这个功能
http://www.cppblog.com/tonykee/archive/2008/05/14/49816.html

14

主题

156

帖子

158

积分

注册会员

Rank: 2

积分
158
QQ
发表于 2008-5-18 23:39:00 | 显示全部楼层

Re:关于刷地形的算法

tonykee,很早就看到你拉,哈哈,研究技术很专注,佩服啊~~

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-5-19 20:24:00 | 显示全部楼层

Re:关于刷地形的算法

过讲,过讲

7

主题

74

帖子

74

积分

注册会员

Rank: 2

积分
74
发表于 2008-5-20 19:45:00 | 显示全部楼层

Re:关于刷地形的算法

好长时间不上gameres了。
今天上来一次,就看到了这个东东,不错。
问下。黄色的圆圈内的地形你是采用什么算法改变的?

是整体的改变黄色圆圈内的顶点的高度,还是采用什么方法修改?

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2008-5-21 09:18:00 | 显示全部楼层

Re:关于刷地形的算法

那个圆只是近似圆,我用了24个点+线连起来的,每个点的高度是根据地形计算出来的。
具体算法其实不复杂
//单个点受影响进行高度的提升或降低
bool UpOrDownPoint(const D3DXVECTOR3& picketPoint, float& x, float& y, float& z,
                                                        float radius ,float strengthPower, float strengthArc)
{
        float distance2 = (x - picketPoint.x) * (x - picketPoint.x) +
                (z - picketPoint.z) * (z - picketPoint.z);
        float r2 = radius * radius;

        float fp = pow((1- distance2 / r2),(1- strengthArc)) * strengthPower;


        //单次循环,凹凸变化的步长,可以根据需要进行修改
        if(distance2 < r2)
        {
                if(gDInput->KeyDown(DIK_LCONTROL))
                {
                        y += fp;
                        return true;
                }
       
                if(gDInput->KeyDown(DIK_LALT))
                {
                        y -= fp;
                        return true;
                }

                if(gDInput->KeyDown(DIK_LSHIFT))
                {
                        if(y > 0)
                        {
              if(y <= fp)
                                  y = 0;
                          else
                                  y -= fp;
                        }
                        else
                        {
              if(-y <= fp)
                                  y = 0;
                          else
                                  y += fp;
                        }
                        return true;
                }
        }
        return false;
}

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-2-15 18:17:00 | 显示全部楼层

Re:关于刷地形的算法

我想知道地形的详细算法是用什么原理计算的。。。望大师们指点下。。。3Q
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-9 10:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表