将以下代码添加到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椭圆柱?相关推荐

  1. 如何在ChemDraw中绘制分子立体结构

    ChemDraw是当前最常用的的化学结构绘图软件,软件功能包括化学作图.分子模型生成.化学数据库信息管理等,可以说是化学家和生物学家所需要最终极的化学结构绘图工具.本教程主要介绍ChemDraw绘制分 ...

  2. tableau实战系列(三十四)-教你如何在tableau中实现3D效果作图

    前言 我们知道,目前 Tableau 还不支持 3D 图表的实现.但是,如果你希望在 Tableau 中呈现立体效果,我们可以另辟蹊径,来实现一些简单的. 柱形图很常见,因为是平面的,也被称为条形图. ...

  3. matlab 三维y轴平面图,#如何在excel中绘制三维坐标系?#excel怎么画图平面坐标图...

    用excel绘制曲线图时如何进行坐标轴转换 点"插入"->"图表"->"XY图","子图表类型"选择&quo ...

  4. matlab怎么画三维坐标的二维图,excel怎么画二维坐标表格图(如何在excel中绘制三维坐标系?)...

    在excle中怎么把二维图形变成三维图形 你说的是图表吗,如果是的话就这样操作 excel2007以上版本:选中图表-点击设计选项卡-最左面有更改图表类型-选择合适的类型-确定 excel2003也是 ...

  5. 如何在AD中添加3D封装模型库(超详细)

    如何在AD中添加3D封装模型库(超详细) 背景:在设计PCB时,尤其涉及到密集结构装配环节,这时候不得不考虑器件实物模型查看仿真. 一.找到并下载3D模型 1.去网站查找(以网站1操作为例) 网站1: ...

  6. xmind可以画流程图吗_如何在XMind 中绘制流程图?

    XMind 是专业强大的思维导图软件,由于其结构没有任何限制,很多朋友特别喜欢用它来绘制流程图.那么,就出现这样一个问题,如何在 XMind 中绘制流程图?下面就和小编一起来看看吧! 如何在 XMin ...

  7. python三维图视角旋转_如何在python中旋转3d图? (或作为动画)使用鼠标旋转三维视图...

    我有这段代码,其中包含一个3D图.我在Spyder中运行代码;我想知道是否可以使这个绘图旋转(360度)并保存. 谢谢! P.s.对不起,如果这是一个愚蠢的问题,但我是Python的newby.如何在 ...

  8. 如何在 XMind 中绘制流程图?

    进阶教程 | 如何在 XMind 中绘制流程图? XMind 是专业强大的思维导图软件,由于其结构没有任何限制,很多朋友特别喜欢用它来绘制流程图.禁不住大家的多次询问,今天 GTQ28就将这简单的流程 ...

  9. 在Flex Chart 中绘制3D图表

    前一阵在论坛上看到一个兄弟,想在Flex Chart中为图例设置3D效果,近几天查找了些资料,动手做了个DEMO供大家参考!        DEMO演示地址http://xingjunli.webs. ...

最新文章

  1. ThinkPHP5.0中Redis的使用和封装(原创)
  2. Django-restframework 之 Exceptions分析
  3. PowerDesigner逆向生成
  4. bzoj3884 上帝与集合的正确用法
  5. MySQL实战案例100例(一)-如何解决非等值范围查找问题?
  6. mysql 递归实现树形_Mysql实现树形递归查询
  7. .NetCore中EFCore for MySql整理(二)
  8. 百度文库、豆丁免费下载对应的下载券资源文件
  9. python判断素数程序_python判断素数程序_Python程序检查素数
  10. 三角函数到傅立叶级数
  11. Linux下的MongoDB基础学习二
  12. 国际植物基博览会2022年6月首次亮相上海;海瑞温斯顿珠宝王国在北京开设新零售沙龙 | 知消...
  13. 雷电3接口能干嘛_【分享帖】3块钱一斤的水泥能干嘛?600多万网友看完后都跪了:水泥竟然这么神…...
  14. wlop2020全奖励包_真的要来?网友发现新更新包拥有“夜魇暗潮2020”信息
  15. Linkflow新锐洞察 06 | DTC品牌如何快速规模化?
  16. 成为成功的软件开发顾问的5个关键
  17. Vuex前端saas人力资源中台管理项目第四天 员工管理模块
  18. MOS管过大电流时关断为什么会出现尖峰电压
  19. Tensorflow学习之tf.keras(一) tf.keras.layers.BatchNormalization
  20. 使用LINUX云服务器搭建web、小程序服务器MySql+Java+Tomcat

热门文章

  1. 深入理解ReLU、Leaky ReLU、 PReLU、ELU、Softplus
  2. Neo4j 任命方俊强为大中华区总经理
  3. CSS中的BFC BFC详解 BFC可以解决的问题汇总
  4. react 项目搭建
  5. BootStrap3中日期选择器的使用
  6. 博看文思大骗子,大家别上当
  7. [数据湖] 基于flink hudi的批流一体实践
  8. 新品上市调查方案-面临的问题
  9. SQL*LOADER错误总结
  10. oracle四舍五入的函数,Oracle 数值四舍五入(组图)