如何在COCOS2D中绘制3d椭圆柱?
将以下代码添加到CCActionGrid3D.h
class CC_DLL CCEllipse3D : public CCGrid3DAction
{
public:
/** initializes an action with duration, grid size, waves and amplitude */
bool initWithDuration(float duration, const CCSize& gridSize, float alength, float blength, float startangle, float endagnle,float xoffset,float yoffset);
/**
* @js NA
* @lua NA
*/
virtual CCObject* copyWithZone(CCZone* pZone);
virtual void update(float time);
public:
/** creates an action with duration, grid size, waves and amplitude */
static CCEllipse3D* create(float duration, const CCSize& gridSize, float alength, float blength, float startangle, float endagnle,float xoffset,float yoffset);
protected:
float m_fStartAngle;//开始角
float m_fEndAngle;//结束角
float m_fALength;//长轴
float m_fBLength;//短轴
float m_fXOffset;//X偏移
float m_fYOffset;//Y偏移
};
将以下代码添加到CCActionGrid3D.cpp
CCEllipse3D* CCEllipse3D::create(float duration, const CCSize& gridSize, float alength, float blength, float startangle, float endagnle,float xoffset,float yoffset)
{
CCEllipse3D *pAction = new CCEllipse3D();
if (pAction)
{
if (pAction->initWithDuration(duration, gridSize, alength, blength, startangle, endagnle, xoffset, yoffset))
{
pAction->autorelease();
}
else
{
CC_SAFE_RELEASE_NULL(pAction);
}
}
return pAction;
}
bool CCEllipse3D::initWithDuration(float duration, const CCSize& gridSize, float alength, float blength, float startangle, float endagnle,float xoffset,float yoffset)
{
if (CCGrid3DAction::initWithDuration(duration, gridSize))
{
m_fStartAngle = startangle;//开始角
m_fEndAngle = endagnle;//结束角
m_fALength = alength;//长轴
m_fBLength = blength;//短轴
m_fXOffset = xoffset;//X偏移
m_fYOffset = yoffset;//Y偏移
return true;
}
return false;
}
CCObject* CCEllipse3D::copyWithZone(CCZone *pZone)
{
CCZone* pNewZone = NULL;
CCEllipse3D* pCopy = NULL;
if(pZone && pZone->m_pCopyObject)
{
//in case of being called at sub class
pCopy = (CCEllipse3D*)(pZone->m_pCopyObject);
}
else
{
pCopy = new CCEllipse3D();
pZone = pNewZone = new CCZone(pCopy);
}
CCGrid3DAction::copyWithZone(pZone);
pCopy->initWithDuration(m_fDuration, m_sGridSize, m_fALength, m_fBLength,m_fStartAngle,m_fEndAngle,m_fXOffset,m_fYOffset);
CC_SAFE_DELETE(pNewZone);
return pCopy;
}
void CCEllipse3D::update(float time)
{
int i, j;
for (i = 0; i < m_sGridSize.width+1; i++)
{
float angle = (m_fStartAngle +(m_fEndAngle-m_fStartAngle)*i/m_sGridSize.width)*time;
for (j = 0; j < m_sGridSize.height + 1; j++)
{
ccVertex3F v = originalVertex(ccp(i ,j));
v.x = m_fALength*cos(angle)-m_fALength+m_fXOffset;
v.y = m_fBLength*sin(angle)+ v.y + m_fYOffset;
setVertex(ccp(i, j), v);
}
}
}
调用相关方法:
runAction(CCEllipse3D::create(1.0f, CCSize(60,1) ,490.0f,-90.0f,0.0f,(float)M_PI,1135.0f,-130.0f));
第一个参数代表时间
第二个参数代表网格
第三个参数椭圆长轴
第四个参数椭圆短柱
第五个参数开始绘制角
第六个参数结束绘制角
第七个参数x轴偏移
第八个参数Y轴偏移
如何在COCOS2D中绘制3d椭圆柱?相关推荐
- 如何在ChemDraw中绘制分子立体结构
ChemDraw是当前最常用的的化学结构绘图软件,软件功能包括化学作图.分子模型生成.化学数据库信息管理等,可以说是化学家和生物学家所需要最终极的化学结构绘图工具.本教程主要介绍ChemDraw绘制分 ...
- tableau实战系列(三十四)-教你如何在tableau中实现3D效果作图
前言 我们知道,目前 Tableau 还不支持 3D 图表的实现.但是,如果你希望在 Tableau 中呈现立体效果,我们可以另辟蹊径,来实现一些简单的. 柱形图很常见,因为是平面的,也被称为条形图. ...
- matlab 三维y轴平面图,#如何在excel中绘制三维坐标系?#excel怎么画图平面坐标图...
用excel绘制曲线图时如何进行坐标轴转换 点"插入"->"图表"->"XY图","子图表类型"选择&quo ...
- matlab怎么画三维坐标的二维图,excel怎么画二维坐标表格图(如何在excel中绘制三维坐标系?)...
在excle中怎么把二维图形变成三维图形 你说的是图表吗,如果是的话就这样操作 excel2007以上版本:选中图表-点击设计选项卡-最左面有更改图表类型-选择合适的类型-确定 excel2003也是 ...
- 如何在AD中添加3D封装模型库(超详细)
如何在AD中添加3D封装模型库(超详细) 背景:在设计PCB时,尤其涉及到密集结构装配环节,这时候不得不考虑器件实物模型查看仿真. 一.找到并下载3D模型 1.去网站查找(以网站1操作为例) 网站1: ...
- xmind可以画流程图吗_如何在XMind 中绘制流程图?
XMind 是专业强大的思维导图软件,由于其结构没有任何限制,很多朋友特别喜欢用它来绘制流程图.那么,就出现这样一个问题,如何在 XMind 中绘制流程图?下面就和小编一起来看看吧! 如何在 XMin ...
- python三维图视角旋转_如何在python中旋转3d图? (或作为动画)使用鼠标旋转三维视图...
我有这段代码,其中包含一个3D图.我在Spyder中运行代码;我想知道是否可以使这个绘图旋转(360度)并保存. 谢谢! P.s.对不起,如果这是一个愚蠢的问题,但我是Python的newby.如何在 ...
- 如何在 XMind 中绘制流程图?
进阶教程 | 如何在 XMind 中绘制流程图? XMind 是专业强大的思维导图软件,由于其结构没有任何限制,很多朋友特别喜欢用它来绘制流程图.禁不住大家的多次询问,今天 GTQ28就将这简单的流程 ...
- 在Flex Chart 中绘制3D图表
前一阵在论坛上看到一个兄弟,想在Flex Chart中为图例设置3D效果,近几天查找了些资料,动手做了个DEMO供大家参考! DEMO演示地址http://xingjunli.webs. ...
最新文章
- ThinkPHP5.0中Redis的使用和封装(原创)
- Django-restframework 之 Exceptions分析
- PowerDesigner逆向生成
- bzoj3884 上帝与集合的正确用法
- MySQL实战案例100例(一)-如何解决非等值范围查找问题?
- mysql 递归实现树形_Mysql实现树形递归查询
- .NetCore中EFCore for MySql整理(二)
- 百度文库、豆丁免费下载对应的下载券资源文件
- python判断素数程序_python判断素数程序_Python程序检查素数
- 三角函数到傅立叶级数
- Linux下的MongoDB基础学习二
- 国际植物基博览会2022年6月首次亮相上海;海瑞温斯顿珠宝王国在北京开设新零售沙龙 | 知消...
- 雷电3接口能干嘛_【分享帖】3块钱一斤的水泥能干嘛?600多万网友看完后都跪了:水泥竟然这么神…...
- wlop2020全奖励包_真的要来?网友发现新更新包拥有“夜魇暗潮2020”信息
- Linkflow新锐洞察 06 | DTC品牌如何快速规模化?
- 成为成功的软件开发顾问的5个关键
- Vuex前端saas人力资源中台管理项目第四天 员工管理模块
- MOS管过大电流时关断为什么会出现尖峰电压
- Tensorflow学习之tf.keras(一) tf.keras.layers.BatchNormalization
- 使用LINUX云服务器搭建web、小程序服务器MySql+Java+Tomcat