- 浏览: 136456 次
- 性别:
- 来自: 大连
-
文章分类
最新评论
-
datawarehouse:
datawarehouse 写道ngix 淘宝是基于这个开发了 ...
解密淘宝网的开源架构 -
datawarehouse:
ngix 淘宝是基于这个开发了一个自己的webserver吧。 ...
解密淘宝网的开源架构 -
eyelock:
我运行报错,,楼主能解答一下G,对swing不熟。
raphi ...
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧 -
lostsky_11:
楼主写出例子了么?物理碰撞部分可能跟你说的差不多渲染部分可以搜 ...
Where is my water 游戏算法 -
xouou_53320:
都是牛人
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧
HGEDistortionMesh例子应用了HGE包中的内容 用来对图片进行扭曲变形处理 #include <stdio.h> #include <JGE.h> #include <JRenderer.h> #include <JLBFont.h> #include <hge/hgedistort.h> #include <hge/hgefont.h> #include "GameApp.h" //------------------------------------------------------------------------------------- // Constructor. Variables can be initialized here. // //------------------------------------------------------------------------------------- GameApp::GameApp() { mTex = NULL;//人物图片Tex mDistortionMesh = NULL;//扭曲工具类 mFont = NULL;//字体 mRows=8;//扭曲参数 mCols=8;//应该是粒度或强度 mCellw=(float)(TEXTURE_WIDTH/(mCols-1));//均匀区分图片为N个Cell cell宽度 mCellh=(float)(TEXTURE_HEIGHT/(mRows-1));//Cell高度 mMeshx=(SCREEN_WIDTH_F-TEXTURE_WIDTH)/2;//扭曲后的图片位置 mMeshy=(SCREEN_HEIGHT_F-TEXTURE_HEIGHT)/2;//在屏幕中央 } //------------------------------------------------------------------------------------- // Destructor. // //------------------------------------------------------------------------------------- GameApp::~GameApp() { } //------------------------------------------------------------------------------------- // This is the init callback function. You should load and create your in-game // resources here. // //------------------------------------------------------------------------------------- void GameApp::Create() { JRenderer* renderer = JRenderer::GetInstance(); mTex=renderer->LoadTexture("texture.jpg");//加载人物图片 // Create a distortion mesh mDistortionMesh=new hgeDistortionMesh(mCols, mRows);//设置扭曲的分块8*8的分块 mDistortionMesh->SetTexture(mTex);//用图片来扭曲 mDistortionMesh->SetTextureRect(0,0,TEXTURE_WIDTH,TEXTURE_HEIGHT);//设置要扭曲的大小 mDistortionMesh->Clear(ARGB(0xFF,0xFF,0xFF,0xFF));//清楚扭曲区 // Load a font mFont=new hgeFont("font1.fnt");//加载显示文字的字体 } //------------------------------------------------------------------------------------- // This is the clean up callback function. You should delete all your in-game // resources, for example texture and quads, here. // //------------------------------------------------------------------------------------- void GameApp::Destroy() { SAFE_DELETE(mTex); SAFE_DELETE(mDistortionMesh); SAFE_DELETE(mFont); } //------------------------------------------------------------------------------------- // This is the update callback function and is called at each update frame // before rendering. You should update the game logic here. // //------------------------------------------------------------------------------------- void GameApp::Update() { JGE* engine = JGE::GetInstance(); // do a screen shot when the TRIANGLE button is pressed if (engine->GetButtonClick(PSP_CTRL_TRIANGLE)) { char s[80]; // save screen shot to root of Memory Stick sprintf(s, "ms0:/screenshot.png"); JRenderer::GetInstance()->ScreenShot(s); } // exit when the CROSS button is pressed if (engine->GetButtonClick(PSP_CTRL_CROSS)) { engine->End(); return; } float dt = engine->GetDelta(); // Get time elapsed since last update. static float t=0.0f;//函数中的静态变量 第一次进入的时候初始化 再进入的时候就沿用原来的值了 static int trans=2;//这点和Java有点不一样 int i, j, col; float r, a, dx, dy; t+=dt;//当前时间 越加越多阿= =???? //按圆按钮 每次改变一个扭曲效果并清屏 if (engine->GetButtonClick(PSP_CTRL_CIRCLE)) { if(++trans > 2) trans=0; mDistortionMesh->Clear(ARGB(0xFF,0xFF,0xFF,0xFF)); } // Calculate new displacements and coloring for one of the three effects //trans3种不同的扭曲效果 switch(trans) { case 0: //将整个图片划分成各个Cell 并单独扭曲 for(i=1;i<mRows-1;i++) { for(j=1;j<mCols-1;j++) { //参数分别为(列,行,Cell中的x坐标,Cell中的y坐标,扭曲效果,根据Cell中心扭曲即HGEDISP_NODE) mDistortionMesh->SetDisplacement(j,i,cosf(t*10+(i+j)/2)*5,sinf(t*10+(i+j)/2)*5,HGEDISP_NODE); //cosf(t*10+(i+j)/2)*5算式根据时间t与Cos余弦函数的乘积 动态改变扭曲的X方向粒度 在一个0~5中变化 //sinf(t*10+(i+j)/2)*5根据sin函数 改变扭曲y方向的粒度 在0~5之间变化 //每个Cell是32*32的大小 整个扭曲的图片时256*256的 分为8*8个Cell } } //mDistortionMesh->SetDisplacement(2,2,cosf(t*10+(2+2)/2)*8,sinf(t*10+(2+2)/2)*8,HGEDISP_NODE); //mDistortionMesh->SetDisplacement(1,1,cosf(t*10+(1+1)/2)*3,sinf(t*10+(1+1)/2)*3,HGEDISP_NODE); break; case 1: for(i=0;i<mRows;i++) { for(j=1;j<mCols-1;j++) { //变形只在x方向上扭曲 并且只根据j值变化 y方向上为0 所以x方向上是0~15的扭曲粒度 变形很严重 //依然是从左上角的cell到右下角的cell 效果类似波浪 如果再加上i的值 变形会在上下方向上不一致 mDistortionMesh->SetDisplacement(j,i,cosf(t*5+(j+i)/2)*15,0,HGEDISP_NODE); col=int((cosf(t*5+(i+j)/2)+1)*35); // colour doesn't work the same as the original HGE version so the following line is commented out. // dis->SetColor(j,i,ARGB(0xFF,col,col,col)); } } break; //这个变形函数没看明白 case 2: for(i=0;i<mRows;i++) { for(j=0;j<mCols;j++) { r=sqrtf(powf(j-(float)mCols/2,2)+powf(i-(float)mRows/2,2)); a=r*cosf(t*2)*0.1f; dx=sinf(a)*(i*mCellh-TEXTURE_HEIGHT/2)+cosf(a)*(j*mCellw-TEXTURE_WIDTH/2); dy=cosf(a)*(i*mCellh-TEXTURE_HEIGHT/2)-sinf(a)*(j*mCellw-TEXTURE_WIDTH/2); mDistortionMesh->SetDisplacement(j,i,dx,dy,HGEDISP_CENTER); col=int((cos(r+t*4)+1)*40); // colour doesn't work the same as the original HGE version so the following line is commented out. // dis->SetColor(j,i,ARGB(0xFF, col,(col/2), 0)); } } break; } } //------------------------------------------------------------------------------------- // All rendering operations should be done in Render() only. // //------------------------------------------------------------------------------------- void GameApp::Render() { // get JRenderer instance JRenderer* renderer = JRenderer::GetInstance(); // clear screen to black renderer->ClearScreen(ARGB(0,0,0,0)); // render the mesh mDistortionMesh->Render(mMeshx, mMeshy);//绘制扭曲的图片 mFont->printf(5, 5, HGETEXT_LEFT, "Press\nCIRCLE!");//显示文字 } //------------------------------------------------------------------------------------- // This function is called when the system wants to pause the game. You can set a flag // here to stop the update loop and audio playback. // //------------------------------------------------------------------------------------- void GameApp::Pause() { } //------------------------------------------------------------------------------------- // This function is called when the game returns from the pause state. // //------------------------------------------------------------------------------------- void GameApp::Resume() { }
发表评论
-
过年没事,一天时间写了一个是男人就撑住20秒的Java版
2012-01-24 13:21 3812每年过年都没事,都得写点小东西,今年是是男人就撑过20秒(20 ... -
Where is my water 游戏算法
2012-01-23 19:56 2124过年把Where is my water完了一遍,对这个游戏的 ... -
假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧
2010-02-16 23:03 11082Bug已经Fix~~ 注释已经补充 import jav ... -
俄罗斯方块:C++中的常用错误原因~~
2008-07-20 20:45 1332很久没有用C++写程序了。。用起来很不顺手! 出了问题不知道怎 ... -
疯狂游戏系列之(一)疯狂俄罗斯策划
2008-07-18 20:38 1500闲来无事,做一个PSP上的俄罗斯方块游戏,大致原则是两个字 疯 ... -
PSP程序开发例子解析(十二)InputSystem
2008-07-14 20:50 1082InputSystem例子掩饰了如何在程序中输入文字 #i ... -
PSP程序开发例子解析(十一)HGEParticles
2008-07-14 20:50 1058HGEParticles这个例子很BT 模仿WindowsMe ... -
PSP程序开发例子解析(九)3DPrimer
2008-07-14 20:48 12673D例子显示一个Cube和一个人物 不断旋转 具体底部底层AP ... -
PSP程序开发例子解析(八)Animator
2008-07-14 20:48 959GameApp.cpp #include <std ... -
PSP程序开发例子解析(七)DisplayingChinese
2008-07-14 20:46 966显示中文 加载点阵文件 没啥说的 就是不清楚点阵文件是哪来的= ... -
PSP程序开发例子解析(六)TrueTypeFont
2008-07-14 20:45 1064按照Windows的ttf字体显示文字。。跑不起来 略 #i ... -
PSP程序开发例子解析(五)Shapes
2008-07-14 20:44 924绘制各种形状 无话可说 #include <st ... -
PSP程序开发例子解析(四)Splines
2008-07-14 20:38 965第四个例子讲述了曲线 ... -
PSP程序开发例子解析(三)ResourceManager
2008-07-14 20:38 970太晚了 明天再写 弄个res文件没找到 换了个工程 copy源 ... -
PSP程序开发例子解析(二)Images
2008-07-14 20:37 1163第二个例子程序演示了 ... -
PSP程序开发例子解析(一)HelloWorld
2008-07-14 20:31 3030今天晚上把PSP的开发环境搭建了起来 并且看了看PSP的Hel ... -
关于BMP图片格式(部分垃圾代码)
2007-11-17 19:05 1354java 代码 做了个刷投票的程序 识别随即码图片的地方 ...
相关推荐
codemirror版本:https://codemirror.net/5/doc/releases.html
外国电影演员识别系统源码分享
mf3010 打印扫描一体机驱动管理软件。
2024免费毕业设计成品,包括源码+数据库+往届论文资料 启动教程:https://www.bilibili.com/video/BV11ktveuE2d 讲解视频:https://www.bilibili.com/video/BV1YfkHYwEME 二次开发教程:https://www.bilibili.com/video/BV1Cw2rY1ErC
chrome-headless-shell-linux64-135.0.7004.0 (Canary).zip
DeepSeek大模型介绍与展望.pptx
英特尔的公版原理图和PCB,cadence版本
《单容水箱液位精准调控:模糊控制策略的深度研究与复现》,单容水箱液位随动系统的模糊控制研究 模糊控制lunwen复现 期刊:化工与自动化仪表(2021年) 图1为结构图,图9为原文结构图, 版本不一样,器件略有调整 图7为结果图,图8为原文结果图 ,单容水箱液位;模糊控制;研究;论文复现;期刊;化工与自动化仪表;结构图;结果图;版本差异;器件调整,"模糊控制研究在单容水箱液位随动系统中的应用与复现"
一个windows上使用的搜索小工具
内容: 这份数据集包含了来自国际大洋发现计划(IODP)第342航次站点U1405、U1406、U1407、U1409和U1410的浮游有孔虫碳酸盐团簇同位素、稳定氧和碳同位素,以及沉积物中的GDGT(甘油二烷基甘油四醚)和烯酮数据。这些站点位于北大西洋的新foundland脊(U1407、U1409和U1410)和J-异常脊(U1405和U1406),用于创建覆盖整个新生代的几乎连续但低分辨率(约每92万年一个样本)的数据拼接,并重建了碳酸盐团簇同位素、TEX86和UK'37海表温度。每个样本包含20立方厘米的沉积物,覆盖2厘米的核心深度区间。年龄模型主要基于详细的船上生物-磁性地层学研究(Norris等,2014)。然而,在40.8 Ma至44.8 Ma时间段内,使用了Cappelli等人(2019)更新的U1410站点年龄模型,通过与U1408站点的年龄模型对比来确定。 访问此数据集,请点击这里:"" ()。
厨房用品分割系统源码&数据集分享
.
监控鞋类物品检测系统源码分享
2024免费毕业设计成品,包括源码+数据库+往届论文资料 启动教程:https://www.bilibili.com/video/BV11ktveuE2d 讲解视频:https://www.bilibili.com/video/BV1YfkHYwEME 二次开发教程:https://www.bilibili.com/video/BV1Cw2rY1ErC
曲线图异常波形检测系统源码分享
内容概要:本文介绍了动车组车号自动识别的现状及其存在的问题,提出了基于图像识别技术的新方法。文中详述了传统人工识别与RFID识别方法的不足,重点阐述了一种新的图像识别系统的设计与实施方案,该系统能够实现在多种恶劣环境下高效精确地获取动车组车号,并通过实际案例展示了这套系统的优势以及其在铁路行业的广阔应用前景。 适用人群:从事铁路运输管理、轨道交通系统开发维护的技术人员,尤其是负责动车组调度、监控及维修工作的相关人员。 使用场景及目标:①用于替代现有人工记录与RFID标签方式,提升动车组车号识别精度与效率;②适用于各种天气状况下的户外作业场景;③旨在构建更加智能化、信息化程度更高的铁路运输体系,助力智慧动车段建设。 其他说明:文中还包括具体的实验对比和技术细节分析,如不同的开机触发装置选择、图像采集设备参数设置、补光措施及识别算法的设计,强调了实际应用场景中可能遇到的问题以及相应的解决方案。
基于AnythingLLM框架和Ollama环境本地运行deepseek,并可以通过用户自己的文档来针对性地回答用户问题,用户也可以上传文件来构建模型回复问题所需要的所有参考资料的知识库,使得模型相对于在线模型更加专业地解答用户的问题。同时本地部署保证了隐私性和针对性。
指针式表盘指针关键部位分割系统源码&数据集分享
多策略增强:MWOA鲸鱼优化算法与其他变体及2024年最新算法的实证比较与结果分析——新颖策略实施效果显著且复杂度无增加的研究,多策略改进的鲸鱼优化算法(MWOA),与其他三种变体和几种2024最新算法比较,策略都是很新颖的策略,可以直接写了发文章,并且没有增加复杂度上改进效果 ,MWOA; 变体算法; 最新算法; 策略新颖; 复杂度未增加; 改进效果显著,"多策略改进MWOA算法:与多种变体及2024新算法比较展示优越性"
织物缺陷检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]