My initial attempt to port over an old Actionscript program, here it goes in main.brs.

Library "v30/bslDefender.brs"

'''''''''''''''''''''''''''''''''''''''''''''''''''
'
function Main() as void screen = CreateObject("roScreen")
port = CreateObject("roMessagePort")
screen.SetMessagePort(port)
screen.SetAlphaEnable(true) m.PI = 3.14159265358979323846264338327958209749445923078164
m.origin = { x:/, y:/, z: }
m.focal_length =
m.scene = { x:m.origin.x, y:m.origin.y }
m.axis_rotation = { x:, y:, z: }
m.camera = { x:, y:, z: } LINE_COLOR = &h00ee00ff
VERTEX_COLOR = &h00dd00ff m.len =
m.points = [
'
vertex3d(-m.len, -m.len, -m.len),
vertex3d(m.len, -m.len, -m.len),
vertex3d(m.len, -m.len, m.len),
vertex3d(-m.len, -m.len, m.len),
'
vertex3d(-m.len, m.len, -m.len),
vertex3d(m.len, m.len, -m.len),
vertex3d(m.len, m.len, m.len),
vertex3d(-m.len, m.len, m.len),
] ' Initialize drawing points, skip
' screen.Clear(&h000000ff)
' for i=0 to m.points.count()-1 step 1
' screen.DrawPoint(m.points[i].x, m.points[i].y, 4, &h00ff00ff)
' end for
' screen.finish() timer = CreateObject("roTimespan")
start_time = timer.TotalMilliseconds() while(true)
current_time = timer.TotalMilliseconds()
if (current_time - start_time > /)
screen.Clear(&h000000ff)
' Rotation
m.axis_rotation.x = m.axis_rotation.x + 0.001
m.axis_rotation.y = m.axis_rotation.y + 0.001
m.axis_rotation.z = m.axis_rotation.z + 0.001
' 3D translation simulated
projected = project_pts(m.points) ' Top face
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
' Bottom face
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
' Vertices
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
screen.drawLine(projected[].x, projected[].y, projected[].x, projected[].y, line_color)
' Vertex
for i= to projected.count()- step
screen.DrawPoint(projected[i].x, projected[i].y, , vertex_color)
end for screen.finish()
end if
end while End Function '''''''''''''''''''''''''''''''''''''''''''''''''''
' 3D translation simulated
function project_pts(points as Object) as Object projected = [] sin_x = sin(m.axis_rotation.x)
cos_x = cos(m.axis_rotation.x)
sin_y = sin(m.axis_rotation.y)
cos_y = cos(m.axis_rotation.y)
sin_z = sin(m.axis_rotation.z)
cos_z = cos(m.axis_rotation.z) for i= to m.points.count()- step
x = m.points[i].x
y = m.points[i].y
z = m.points[i].z ' rotate about x axis
xy = cos_x*y - sin_x*z
xz = sin_x*y + cos_x*z
' rotate about y axis
yz = cos_y*xz - sin_y*x
yx = sin_y*xz + cos_y*x
' rotate about z axis
zx = cos_z*yx - sin_z*xy
zy = sin_z*yx + cos_z*xy scale = m.focal_length/(m.focal_length+yz-m.camera.z)
x = zx*scale - m.camera.x 'get x position in the view of camera
y = zy*scale - m.camera.y 'get y position in the view of camera projected[i] = vertex3d(x+m.scene.x, y+m.scene.y, yz, scale)
end for return projected end function '''''''''''''''''''''''''''''''''''''''''''''''''''
' Return a vector point
function vertex3d(x as Integer, y as Integer, z as Integer, scale = as Integer) as Object return { x:x, y:y, z:z, scale:scale } end function

And a screen shot:

-- Regards

BrightScript 3D test - Roku (4)的更多相关文章

  1. 在eclipse上搭建Roku开发环境

    环境:Oracle VM virtualBox+Ubuntu server 12.0.4.2 LTS+xfce+ Eclipse IDE for C/C++ Developers 4.3.2 参考:h ...

  2. 2D、3D形变

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Monaco; color: #a5b2b9 } span.Apple-tab-span { ...

  3. CSS3 3D立方体效果-transform也不过如此

    CSS3系列已经学习了一段时间了,第一篇文章写了一些css3的奇技淫巧,原文戳这里,还获得了较多网友的支持,在此谢过各位,你们的支持是我写文章最大的动力^_^. 那么这一篇文章呢,主要是通过一个3D立 ...

  4. 三分钟学会用 js + css3 打造酷炫3D相册

    之前发过该文,后来不知怎么回事不见了,现在重新发一下. 中秋主题的3D旋转相册 如图,这是通过Javascript和css3来实现的.整个案例只有不到80行代码,我希望通过这个案例,让正处于迷茫期的j ...

  5. 使用CSS3实现一个3D相册

    CSS3系列我已经写过两篇文章,感兴趣的同学可以先看一下CSS3初体验之奇技淫巧,CSS3 3D立方体效果-transform也不过如此 第一篇主要列出了一些常用或经典的CSS3技巧和方法:第二篇是一 ...

  6. Android ViewPager打造3D画廊

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 网上有很多关于使用Gallery来打造3D画廊的博客,但是在关于Gallery的官方说法中表明: This cl ...

  7. 如何在ASP.Net创建各种3D图表

    我们都知道,图表在ASP.NET技术中是一种特别受欢迎而又很重要的工具.图表是表示数据的图形,一般含有X和Y两个坐标轴.我们可以用折线,柱状,块状来表示数据.通过图表控件,我们即能表示数据又能比较各种 ...

  8. 现代3D图形编程学习-基础简介(3)-什么是opengl (译)

    本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...

  9. CSS 3 学习——transform 3D转换渲染

    以下内容根据官方规范翻译,没有翻译关于SVG变换的内容和关于矩阵计算的内容. 一般情况下,元素在一个无景深无立体感的平面(flat plane)上渲染,这个平面就是其包含块所处的平面.同时,页面上的其 ...

随机推荐

  1. 乘风破浪:LeetCode真题_011_Container With Most Water

    乘风破浪:LeetCode真题_011_Container With Most Water 一.前言 下面我们继续进行编程练习,可以说对于实际问题的活学活用是非常重要的.比如我们这次的题目,就需要从中 ...

  2. C/S架构的性能测试

    很多人关心LR在C/S架构上如何实施性能测试,我想根本原因在于两个方面,一是很多时候脚本无法录制,即LR无法成功调用被测的应用程序,二是测试脚本即使录制下来,可读性不强,往往不能运行通过,调试时无从下 ...

  3. Linux提权后获取敏感信息的方法与途径

    在本文开始之前,我想指出我不是专家.据我所知,在这个庞大的区域,没有一个“神奇”的答案.分享,共享(我的出发点).下面是一个混合的命令做同样的事情,在不同的地方,或只是一个不同的眼光来看待事物.我知道 ...

  4. nordic对苹果性能测试

    环境: app采用nrf connect或lightblue均可: nordic从端采用nrf52840开发板pca10056: 说明与规定: (1)鉴于手机app无法主动连续快速发送多包数据,故只测 ...

  5. WEB安全 php+mysql5注入防御(一)

    注入利用函数: concat()函数将多个字符串连接成一个字符串 database() 当前数据库,用途:获取数据 version() 数据库版本,用途:利用版本特性,如5.0版本下的informat ...

  6. Markdown语法初体验

    前言 由于把博客主题样式换了,所以改用Markdown语法,让代码看起来更加舒服一些. 照葫芦画瓢 这里是H1标题(===) 这里是H2标题(---) 使用一个#号 使用两个#号 使用三个#号 引用 ...

  7. 在Windos上安装Nginx

    官网地址:http://nginx.org/en/download.html 1.下载 2.解压 3.启动 4.访问 打开cmd cd到nginx路径,使用命令关闭它 nginx.exe -s sto ...

  8. sdn测量综述

    一 文章名称:A Survey on Security-Aware Measurement in SDN 发表时间:2018 来源:<Security & Communication N ...

  9. 我的QT5学习之路(三)——模板库、工具类和控件(下)

    一.前言 作为第三篇的最后一部分,我们来看一下Qt的控件,谈到控件,就会让人想到界面的美观性和易操作性,进而想到开发的便捷性.作为windows界面开发的MFC曾经是盛行了多少年,但是其弊端也随着其他 ...

  10. 无法加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项

    未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项.找到的程序集清单定义与程序集引用不匹配. (异常来自 HRESULT:0x80131040). 有时候我们创建了一个类库,我们 ...