一段midp1纹理的代码,是自己推的肯定不怎么好
来源:互联网 发布:淘宝c店是什么意思啊 编辑:程序博客网 时间:2024/05/16 05:33
一段纹理的代码,是自己推的肯定不怎么好
可以把float替换为定点数,把image改为一段int 数据
可以把float替换为定点数,把image改为一段int 数据
public void textureTest(float x1,float y1,
float x2,float y2,
float x3,float y3,
float u1,float v1,
float u2,float v2,
float u3,float v3,
Image texture
){
float dxab,dyab,dxbc,dybc,dxca,dyca;
float duab,dvab,dubc,dvbc,duca,dvca;
dxab=x2-x1;
dyab=y2-y1;
dxbc=x3-x2;
dybc=y3-y2;
dxca=x1-x3;
dyca=y1-y3;
duab=u2-u1;
dvab=v2-v1;
dubc=u3-u2;
dvbc=v3-v2;
duca=u1-u3;
dvca=v1-v3;
float dyu, dyv, dxu, dxv;
dyu=(duab*dxbc-dubc*dxab)/(dyab*dxbc-dybc*dxab);
dyv=(dvab*dxbc-dvbc*dxab)/(dyab*dxbc-dybc*dxab);
dxu=(duab-dyu*dyab)/dxab;
dxv=(dvab-dyv*dyab)/dxab;
System.out.println("textuetest, dxu="+dxu);
System.out.println("textuetest, dxv="+dxv);
int []textureData=new int[texture.getHeight()*texture.getWidth()];
texture.getRGB(textureData,0,texture.getWidth(),0,0,texture.getWidth(),texture.getHeight());
int textureWidth=texture.getWidth();
int textureHeight=texture.getHeight();
System.out.println("textuetest vpx="+vpx+" vpy="+vpy);
for(int y=0;y<320/*canvas height*/;y++){
for(int x=0;x<240/*canvas width*/;x++){
float u,v;
u=(x-x1)*dxu +(y-y1)*dyu + u1;
v=(x-x1)*dxv +(y-y1)*dyv + v1;
u=textureTestBetween0to1(u);
v=textureTestBetween0to1(v);
u*=textureWidth;
v*=textureHeight;
int ui=(int )u;
int vi=(int )v;
if(ui==textureWidth){
ui=0;
}
if(vi==textureHeight){
vi=0;
}
// System.out.println("ui="+ui +" vi="+vi);
int color=textureData[ui+vi*textureWidth];
g.setColor((color&0x00ffffff));
g.drawLine(x,y,x,y);
}
}
g.setColor(0xffffff);
g.drawLine((int )x1,(int )y1,(int )x2,(int )y2);
g.drawLine((int )x3,(int )y3,(int )x2,(int )y2);
g.drawLine((int )x3,(int )y3,(int )x1,(int )y1);
}
public float textureTestBetween0to1(float u){
if(u<0){
u=u-((int)u)+1;
}else if(u>=1){
u=u-((int)u);
}
return u;
}
float x2,float y2,
float x3,float y3,
float u1,float v1,
float u2,float v2,
float u3,float v3,
Image texture
){
float dxab,dyab,dxbc,dybc,dxca,dyca;
float duab,dvab,dubc,dvbc,duca,dvca;
dxab=x2-x1;
dyab=y2-y1;
dxbc=x3-x2;
dybc=y3-y2;
dxca=x1-x3;
dyca=y1-y3;
duab=u2-u1;
dvab=v2-v1;
dubc=u3-u2;
dvbc=v3-v2;
duca=u1-u3;
dvca=v1-v3;
float dyu, dyv, dxu, dxv;
dyu=(duab*dxbc-dubc*dxab)/(dyab*dxbc-dybc*dxab);
dyv=(dvab*dxbc-dvbc*dxab)/(dyab*dxbc-dybc*dxab);
dxu=(duab-dyu*dyab)/dxab;
dxv=(dvab-dyv*dyab)/dxab;
System.out.println("textuetest, dxu="+dxu);
System.out.println("textuetest, dxv="+dxv);
int []textureData=new int[texture.getHeight()*texture.getWidth()];
texture.getRGB(textureData,0,texture.getWidth(),0,0,texture.getWidth(),texture.getHeight());
int textureWidth=texture.getWidth();
int textureHeight=texture.getHeight();
System.out.println("textuetest vpx="+vpx+" vpy="+vpy);
for(int y=0;y<320/*canvas height*/;y++){
for(int x=0;x<240/*canvas width*/;x++){
float u,v;
u=(x-x1)*dxu +(y-y1)*dyu + u1;
v=(x-x1)*dxv +(y-y1)*dyv + v1;
u=textureTestBetween0to1(u);
v=textureTestBetween0to1(v);
u*=textureWidth;
v*=textureHeight;
int ui=(int )u;
int vi=(int )v;
if(ui==textureWidth){
ui=0;
}
if(vi==textureHeight){
vi=0;
}
// System.out.println("ui="+ui +" vi="+vi);
int color=textureData[ui+vi*textureWidth];
g.setColor((color&0x00ffffff));
g.drawLine(x,y,x,y);
}
}
g.setColor(0xffffff);
g.drawLine((int )x1,(int )y1,(int )x2,(int )y2);
g.drawLine((int )x3,(int )y3,(int )x2,(int )y2);
g.drawLine((int )x3,(int )y3,(int )x1,(int )y1);
}
public float textureTestBetween0to1(float u){
if(u<0){
u=u-((int)u)+1;
}else if(u>=1){
u=u-((int)u);
}
return u;
}
- 一段midp1纹理的代码,是自己推的肯定不怎么好
- 一段好的代码
- 天气真的不怎么好
- 解决不掉问题,肯定是自己的问题
- 【高敏感是种天赋:肯定自己的独特…
- lower_bound(一个不怎么好的栗子)
- 得到肯定总是好的
- 一段javascript实现缩略图的好代码
- 一段javascript实现缩略图的好代码
- 一段javascript实现缩略图的好代码
- 自己写的一段重试代码
- #python#自己写的一段小代码
- CSDN的写文章功能不怎么好用
- 一种效果不怎么好的制转方法
- 正月十五,团圆的一天,银行卡找不到了,肯定是自己的失误造成的
- 组织好自己的代码
- 自己写的不怎么行1052. 卖个萌 (20)
- 自己的一段程序
- C,C++,MFC 异常处理(zz)
- 也谈AJAX
- 软件编程规范总则-7 可测性
- 转贴~~~JAVA开源网站
- 软件编程规范总则-8 程序效率
- 一段midp1纹理的代码,是自己推的肯定不怎么好
- 软件编程规范总则-9 质量保证
- MySql数据库软件的使用学习(freshing...)
- ABOUT MY ID AT HERE
- 什么是IPV6
- 用log4j模仿数据库查看处理结果
- 图像处理VC源码1.0-DibApi
- [全程建模]需求与编码的对应关系——全程建模技术新进展
- 图像处理VC源码1.0-CqOctree