游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4826|回复: 10

[讨论] 我今天正面对的关于线性代数的问题

[复制链接]

197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
发表于 2006-11-2 14:12:00 | 显示全部楼层 |阅读模式
前天策划区有人说我自大。非也。我一点都不自大。

因为我想策划的数学都是可以的,所以我抓了幅图,来咨询关于线性代数的算法。我不怕麻烦的,就怕这个问题解决不了,或则没找到最佳的算法公式。

我的最终目的是,根据4个来自角的母数,平滑一个区域。区域大小有3种情况,32*32和64*64,128*128,均为2的次方。为了分析简易可行,我将demo的数值用手写的,填在表格中。我的目的是根据4个来自角的母数,平滑整个区域。

该问题是我昨天遇到的,因为我用photoshop的柔边计算的线性代数有问题,结果出来的数字全是爆炸值,没起到平滑作用。

该问题就是对普通的线性代数,进行2次平滑插值,不知道该问题是否让各位策划感到有点为难?
sf_2006112141152.jpg

41

主题

2104

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
发表于 2006-11-2 14:53:00 | 显示全部楼层

Re:各位策划达人很喜欢数学吗?这是我今天正面对的关于

这不用线性代数不一样能做么
先把4个边求出来
再一行一行的求就完事了……

41

主题

2104

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
发表于 2006-11-2 14:57:00 | 显示全部楼层

Re:各位策划达人很喜欢数学吗?这是我今天正面对的关于

#include <iostream>
using namespace std;

#define HOR 16
#define VER 16


//  a    i     b
//      
//  j  
//
//  d          c
void main(void)
{
        int a,b,c,d;
        int m[HOR][VER];
        int i,j;

        cout<<"please input a:"<<endl;
        cin>>a;
        cout<<"please input b:"<<endl;
        cin>>b;
        cout<<"please input c:"<<endl;
        cin>>c;
        cout<<"please input d:"<<endl;
        cin>>d;

       
        for(i = 0; i < HOR; i++)
        {
                m[0] = a + (b - a) * i / HOR;
                m[HOR - 1] = d + (c - d) * i / HOR;
        }
        for(j = 0; j < VER; j++)
        {
                m[0][j] = a + (d - a) * j / VER;
                m[VER - 1][j] = b + (c - b) * j / VER;
        }
        for(i = 1; i < HOR - 1; i++)
        {
                for(j = 1; j < VER - 1; j++)
                {
                        m[j] = m[0] + (m[VER - 1] - m[0]) * j / (VER - 2);
                }
        }
        for(i = 0; i < HOR; i++)
        {
                for(j = 0; j < VER; j++)
                {
                        cout<<m[j]<<" ";
                }
                cout<<endl;
        }       
}

197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
 楼主| 发表于 2006-11-2 15:10:00 | 显示全部楼层

Re:各位策划达人很喜欢数学吗?这是我今天正面对的关于

geegee能不能解释一下这一句的计算思路?
m[j] = m[0] + (m[VER - 1] - m[0]) * j / (VER - 2);

197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
 楼主| 发表于 2006-11-2 15:14:00 | 显示全部楼层

Re: 各位策划达人很喜欢数学吗?这是我今天正面对的关于

如果当前计算坐标不是在4个边的话,会发生4个数交替,

geegee,请不能介绍一下,如果4个数交替,你的处理思路?
sf_2006112151359.jpg

52

主题

637

帖子

1420

积分

金牌会员

Rank: 6Rank: 6

积分
1420
发表于 2006-11-2 15:18:00 | 显示全部楼层

Re:各位策划达人很喜欢数学吗?这是我今天正面对的关于

仿佛跟线性代数关系不大

197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
 楼主| 发表于 2006-11-2 15:53:00 | 显示全部楼层

Re:各位策划达人很喜欢数学吗?这是我今天正面对的关于

你只算出了单线,没有算出临接数
不过还是谢谢你,至少给了我不少启发。

关于临接的数值,应该是4个数中的最大数减掉,或则4个数的最小数加上,4个数的两个差的最大差的除2。geegee如果你把算法加以改进,考虑一下交叉值就对了。

看你是临时随手写的算法,思路很清晰,表示佩服。虽然你忘了必须round取整。在math库中。这个算法我已经明白了。多谢启发。

49

主题

1388

帖子

1432

积分

金牌会员

Rank: 6Rank: 6

积分
1432
发表于 2006-11-2 16:07:00 | 显示全部楼层

Re:各位策划达人很喜欢数学吗?这是我今天正面对的关于

记得matlab中有类似的函数

以前做毕业设计的时候,处理图像的时候,需要对图像进行锐化,自己写过一个算法,但效率和效果都不太好,查看帮助,看到一个函数,使用后效率和效果都大大好过自己写的算法

matlab我还记得带有转为C的工具,也就是说在matlab写好的代码可以转为C代码

49

主题

1388

帖子

1432

积分

金牌会员

Rank: 6Rank: 6

积分
1432
发表于 2006-11-2 16:09:00 | 显示全部楼层

Re:我今天正面对的关于线性代数的问题

忘记说了,matlab的算法大多是基于矩阵的,也是楼主希望的“线性代数”算法^…^

41

主题

2104

帖子

2109

积分

金牌会员

Rank: 6Rank: 6

积分
2109
发表于 2006-11-2 16:33:00 | 显示全部楼层

Re:我今天正面对的关于线性代数的问题

不是啊,我是一行一行算的,因为9 x 7那行的开头和结尾本来就是算出来的,相邻2行之间的关系早在算开头和结尾的时候就已经确定了

所以根本不用看6 x 10那列对x的影响

另外int也不用取整,他自动就把尾数忽略掉了,这里面没必要四舍五入吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-8 18:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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