enuSpace for Mars를 이용한 2D, 3D Data Visualization 작업


실행 결과 동영상


샘플 Task 생성 및 등록.

* enuSpace for Mars는 뛰어난 Timing Scheduling 기능을 제공합니다. C++, Fortran 을 이용하여 생성한 dll을 정확한 타이밍 스케쥴러를 통하여 Task 연산이 가능하도록 적용하였습니다.

* 연산된 결과는 메모리 기반의 데이터베이스와 연계되어 빠른 인터페이스가 가능하도록 적용하였습니다. 

* 생성된 모델을 스케쥴링 타임 설정값을 지정합니다.


DB 등록.

간단하게 작성된 모델 변수를 DB에 등록합니다.

샘플 모델을 0~1사이의 값으로 값을 생성하여 타이밍 스케쥴러에 따라서 연산을 수행합니다.


화면 픽쳐 객체 생성.

페이지 로딩시 2D 객체를 루아 스크립트를 이용하여 동적으로 생성합니다. 생성된 객체에 데이터 바인딩을 수행할 스크립트도 같이 등록하여 줍니다.

function _onload()

local tx = 300

local ty = 200

local i = 1

local j = 1

local k = 1

local id_text

for i=1,24,1 do 

for j=1,15,1 do

id_text = string.format("ID_%d_1_%d_H", j,i)

CreateRect(id_text, 0, 0, 15, 15, 20*j+tx, 20*i+ty)

end

end


local strScript

for i=1,24,1 do 

for j=1,15,1 do

id_text = string.format("ID_%d_1_%d_H", j, i)

strScript = string.format("function _ontaskview()\nfill=GetValueColor(@CORE.flux_%d_1_%d)\nend", j, i)

RegisterLuaScriptById(id_text, "_ontaskview", strScript)

end

end

local tx = 800

local ty = 300


local k = 2

for i=1,15,1 do 

for j = 1,15,1 do

id_text = string.format("ID_%d_%d_%d", i, j, k)

CreateRect(id_text, 0, 0, 15, 15, i*20+tx, j*20+ty)

end

end

for i=1,15,1 do 

for j = 1,15,1 do

id_text = string.format("ID_%d_%d_%d", i, j, k)

strScript = string.format("function _ontaskview()\nfill=GetValueColor(@CORE.flux_%d_%d_%d)\nend", i, j, k)

RegisterLuaScriptById(id_text, "_ontaskview", strScript)

end

end

end 


페이지 로딩시 3D 객체를 루아 스크립트를 이용하여 동적으로 생성합니다. 생성된 객체에 데이터 바인딩을 수행할 스크립트도 같이 등록하여 줍니다.

function _onload()

local tx = 75

local ty = 75

local tz = 150

local i = 1

local j = 1

local k = 1

local id_text

for i=1,15,1 do 

for j = 1,15,1 do

for k = 1,24,1 do

id_text = string.format("ID_%d_%d_%d", i, j, k)

Create3DBox(id_text, 7, i*10-tx,j*10-ty,tz-k*10)

end

end

end

local strScript

for i=1,15,1 do 

for j = 1,15,1 do

for k = 1,24,1 do

id_text = string.format("ID_%d_%d_%d", i, j, k)

strScript = string.format("function _ontaskview()\ndiffuseColor=GetValueColor(@CORE.flux_%d_%d_%d)\nend", i, j, k)

RegisterLuaScriptById(id_text, "_ontaskview", strScript)

end

end

end

end


function GetValueColor(fValue)


fValue = fValue * 50

local color


if fValue<0 then

color = string.format("rgb(0,0,0)")

elseif fValue>0 and fValue <=5 then

color = string.format("rgb(15,75,165)")

elseif fValue>5 and fValue <=10 then

color = string.format("rgb(30,110,200)")

elseif fValue>10 and fValue <=15 then

color = string.format("rgb(60,160,240)")

elseif fValue>15 and fValue <=20 then

color = string.format("rgb(80,180,250)")

elseif fValue>20 and fValue <=25 then

color = string.format("rgb(130,210,255)")

elseif fValue>25 and fValue <=30 then

color = string.format("rgb(160,240,255)")

elseif fValue>30 and fValue <=35 then

color = string.format("rgb(200,250,255)")

elseif fValue>35 and fValue <=40 then

color = string.format("rgb(230,255,255)")

elseif fValue>40 and fValue <=45 then

color = string.format("rgb(255,250,220)")

elseif fValue>45 and fValue <=50 then

color = string.format("rgb(255,232,120)")

elseif fValue>50 and fValue <=55 then

color = string.format("rgb(255,192,60)")

elseif fValue>55 and fValue <=60 then

color = string.format("rgb(255,160,0)")

elseif fValue>60 and fValue <=65 then

color = string.format("rgb(255,96,0)")

elseif fValue>65 and fValue <=70 then

color = string.format("rgb(255,50,0)")

elseif fValue>70 and fValue <=75 then

color = string.format("rgb(225,20,0)")

elseif fValue>75 and fValue <=80 then

color = string.format("rgb(192,0,0)")

elseif fValue > 80 then

color = string.format("rgb(150,0,0)")

end

return color

end






+ Recent posts