1. #include <ai.h>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <vector>
  5. #include <assert.h>
  6.  
  7. using namespace std;
  8.  
  9. void print_the_type()
  10. {
  11. printf("AI_TYPE_BYTE %5d \n",AI_TYPE_BYTE); //
  12. printf("AI_TYPE_INT %5d \n",AI_TYPE_INT); //
  13. printf("AI_TYPE_FLOAT %5d \n",AI_TYPE_FLOAT); //
  14. printf("AI_TYPE_STRING %5d \n",AI_TYPE_STRING);//
  15. printf("AI_TYPE_ARRAY %5d \n",AI_TYPE_ARRAY); //
  16. printf("AI_TYPE_POINT %5d \n",AI_TYPE_POINT); //
  17. }
  18.  
  19. int main()
  20. {
  21. print_the_type();
  22. printf("\n");
  23. printf("test AI_TYPE_FLOAT ARRAY\n");
  24. AtArray *array = AiArrayAllocate(,,AI_TYPE_FLOAT);
  25. // basic method
  26. /*
  27. for(int i=0;i<array->nelements*2;i++)
  28. {
  29. AiArraySetFlt(array,i,i);
  30. }
  31. */
  32. float *test = static_cast <float *> (array->data);
  33. test[]=;
  34. test[]=;
  35. test[]=;
  36.  
  37. for(int i=;i<array->nelements*;i++) // MUTIPLY *2 ,because have two float[3],so it's have the 3*2=6
  38. {
  39. cout << AiArrayGetFlt(array,i) <<endl;
  40. }
  41. AiArrayDestroy(array);
  42.  
  43. printf("\n");
  44. // test the array point
  45. printf("test AI_TYPE_POINT ARRAY\n");
  46. // create 2 point and have two motion keys
  47. // so the data have 4 point ,every point have 3 elements ... the count is 2*3*2 = 12
  48. AtInt32 keys = ;
  49. AtArray *array_type_point = AiArrayAllocate(,keys,AI_TYPE_POINT);
  50. assert(array_type_point->nkeys==);
  51. assert(array_type_point->nelements==);
  52. assert(array_type_point->nelements*==);
  53.  
  54. float * array_raw_pt= static_cast <float *> (array_type_point->data);
  55. //pt 1
  56. array_raw_pt[]=1.0f;
  57. array_raw_pt[]=2.0f;
  58. array_raw_pt[]=3.0f;
  59. // pt 2
  60. array_raw_pt[]=4.0f;
  61. array_raw_pt[]=5.0f;
  62. array_raw_pt[]=6.0f;
  63. // pt3
  64. array_raw_pt[]=7.0f;
  65. //assert(AiArraySetFlt(array,7,8.0f) == 1 ); //arnold will test array_type is same as rh array
  66. // cout << array_raw_pt[0] << endl;
  67. cout.setf(ios::showpoint);
  68. for(int i=;i<array_type_point->nelements*keys;i++)
  69. {
  70. cout<< i <<" x : -> " << AiArrayGetPnt(array_type_point,i).x <<endl;
  71. cout<< i <<" y : -> " << AiArrayGetPnt(array_type_point,i).y <<endl;
  72. cout<< i <<" z : -> " << AiArrayGetPnt(array_type_point,i).z <<endl;
  73. }
  74. AiArrayDestroy(array_type_point);
  75.  
  76. cin.get();
  77. return ;
  78. }

Arnold AtArray API Test的更多相关文章

  1. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  2. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  3. 几个有趣的WEB设备API(二)

    浏览器和设备之间还有很多有趣的接口, 1.屏幕朝向接口 浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏. (1)使用css媒体查询的方法 /* 竖屏 */ @media screen and (or ...

  4. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  5. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  6. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  7. javascript的api设计原则

    前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...

  8. 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

  9. 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用

    由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...

随机推荐

  1. px与rem关系及转换

    PX特点 1. IE无法调整那些使用px作为单位的字体大小:2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位:3. Firefox能够调整px和em,rem,但是96%以上的中 ...

  2. BAT常用脚本汇总

    1.取得时间戳 @echo off set date0=%date:~0,10% set hour0=%time:~0,2% set time0=%time:~0,2%%time:~3,2%%time ...

  3. log4j使用快速入门【转】

    1.引言 在应用程序中添加日志记录总的来说基于三个目的: .监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作 .跟踪代码运行时轨迹,作为日后审计的依据 .担当集成开发环境中的调 ...

  4. pyspider 安装时 Could not run curl-config

    sudo aptitude install libcurl4-openssl-dev

  5. TID大会学习心得之软技能

    软技能(Personal development as a software developer) John Sonmez : Simple programmer的创始人 2.1 学习方法 学习不是一 ...

  6. 关于python,一些整理

    参数传递 1 a = 1 2 def fun(a): 3 a = 2 4 fun(a) 5 print a 6 7 # 输出: 1 a = [] def fun(a): a.append(1) fun ...

  7. 6.Linux的文件权限与目录配置

    Linux文件属性:(- rwx r-x r-- 1 root root 2800 feb 1 11:55 test.txt 顺序按着空格排序,除了时间) 第一组字符代表这个文件是目录.文件或链接文件 ...

  8. 【转载】如何破解受保护的excel密码

    [工具] 1.电脑一台(安装有Microsoft Excel) 2.受保护excel一个 [步骤] 1.首先,打开受保护的Excel表格,按"ALT"+"F11" ...

  9. Spring MVC配置

    web配置 <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="ht ...

  10. telnet输入乱码的解决

    1.Win+R --- 运行窗口  输入cmd回车 2.输入telnet 主机 端口 3.连接主机发现无法输入 4.这里什么也不要输入,按下 ctrl+] 键 5.按下回车键,然后会弹出新的窗口,就可 ...