久久久久久精品无码人妻_青春草无码精品视频在线观_无码精品国产VA在线观看_国产色无码专区在线观看

代做COMP27112、代寫Java語言程序

時間:2024-03-08  來源:  作者: 我要糾錯



Introduction to Visual Computing
Coursework Assignment 2
Sun, Planet and Moon
Tim Morris
Introduction
The aim of this exercise is to render a simple solar system with one moon orbiting one
planet orbiting one sun. As with the previous exercise, you’ll need a web browser to display
the output and a simple text editor1 to create the html file you’ll need.
This piece of work contributes half of the coursework assessment. We suggest that you
should not spend more than 15 hours in total completing Assignments 1 and 2.
Getting Started
Start off with the same code as last time for creating the basic webpage. Under “// Your
Javascript will go here.” you’ll add any global variables and calls to two
functions, init() and animate().
Creating the Scene (init();)
Everything is initialised in this function.
As before, add a scene, camera and renderer and add the renderer to the
document (don’t forget to declare the scene, camera and renderer as global
variables). You won’t need a vertex shader or fragment shader this time.
Put the far plane of the camera at 10000. Locate the camera at (0, 30, 500) and add it to the
scene.
You’ll need to create nine variables for the sun’s, earth’s and moon’s geometries, materials
and meshes. These are global variables.
You can create the sun object using the following code:
1 You should ensure that your text editor saves your html files as plain text. Some editors (e.g. TextEdit on the
Mac add all kinds of stuff to what you think is a plain html file, meaning that you just see the text of your file
when you open it in your browser. Don’t forget to give your files the correct extension.
You could also use a suitable IDE.
sunGeometry = new THREE.SphereGeometry(109, 400, 200);
sunMaterial = new THREE.MeshStandardMaterial(
 {
 emissive: 0xffd700,
// emissiveMap: texture,
 emissiveIntensity: 1,
 wireframe: false
 }
);
sunMesh = new THREE.Mesh(sunGeometry, sunMaterial);
scene.add(sunMesh);
This creates a spherical object (what do the arguments mean?) of a particular colour. Where
is it located? The emissiveMap is something you may use later.
The sun must be a source of light. The PointLight() constructor can achieve this.
Create a point light source of white light at the origin and add it to the scene. You might also
add a diffuse light to give some background illumination, use AmbientLight().
Obviously this is physically unrealistic but it makes the objects more visible.
You can create the earth and moon using similar code with the following differences:
• The earth sphere geometry arguments are 25, 50, 50
• The moon sphere geometry arguments are 5, 40, 20
• Both the earth and moon materials are MeshPhongMaterial, they don’t have an
emissive argument, but do have a color. You can experiment with color
values.
The texture argument might be used later. So the earthMaterial can be created
using something like:
earthMaterial = new THREE.MeshPhongMaterial(
 {
// map: texture,
 color: x0000ff
 }
The earth and moon will be grouped together into one object before being added to the
scene. To do this we need a global variable to store the earth-moon system, we need to
add the earth to it, by default it will go to the origin of this system. Then we need to add the
moon to the system and set its position relative to the earth.
Three.js provides a group object for storing collections:
earthSystem = new THREE.Group();
Then the earth (and moon) can be added to this in a manner that was similar to the way we
added the sun to the scene:
earthSystem.Add(earthMesh);
Don’t forget to set the position of the moon within the earth-moon system, using a function
something like:
moonMesh.position.set(orbitRadius, 0, 0);
A suitable value for orbitRadius is in the range 40 – 60.
The earth’s orbit could be approximated as a circle, and the location of the earth on it could
be computed as the following pseudocode:
earth.position.x = earthOrbitRadius * sin(2pwt);
earth.position.y = earthOrbitRadius * cos(2pwt);
w is the earth’s angular velocity and t is some measurement of time.
It is slightly more realistic to make the orbit an ellipse. To make this more efficient we precompute the co-ordinates of the earth’s orbit. Create a global variable with a suitable name.
The points can be computed by calling the function EllipseCurve. This has arguments
to define:
• The x co-ordinate of the centre point of the ellipse
• The y co-ordinate of the centre point of the ellipse
• The radius of the ellipse in the x direction
• The radius of the ellipse in the y direction
• The start angle for drawing the ellipse (in this case 0 radians)
• The end angle for drawing the ellipse (in this case 2p radians)
• Plus other arguments that can take default values.
You may choose to draw the orbit, in which case you will have to
• Transfer points from the orbit into a line buffer
• Create a geometry (using BufferGeometry) from these points
• Create a material (using LineBasicMaterial) and setting a suitable colour
• Create a line object using the geometry and material
• Rotate the line so it lies in the XZ plane instead of the default XY plane
• Add it to the scene
Animation (Animate();)
The basic animation function will contain the two lines to render the scene and request an
animation frame, as in the previous exercise. If you’ve followed the instructions so far and
now implement this, you’ll see a static scene with the sun, earth and moon in fixed positions
and the earth orbit (if you chose to draw it). The earth and moon should be solid coloured
spheres. The next step is to add movement to the objects. The following code should be
added to Animate() before the two lines you’ve just written.
The sun’s movement is simple. It doesn’t move. You might want to make it rotate if you add
a texture to it, which will be done later.
The earth-moon system’s position could be driven by using a counter that is incremented
for each frame of the animation. But we’ll use the time instead. A time can be obtained by
calling performance.now(). This gives the time in milliseconds since the browser
window was opened. This can be converted into a value in the range [0, 1) which will be
used as an index into the values of the EllipseCurve you defined earlier. In
pseudocode:
time = 0.00001 * performance.now();
t = (time mod 1)
We can get the earth-moon position by reading a point from the EllipseCurve object
(assume it’s called curve):
point = curve.getPoint(t)
Then the earthSystem’s x and z positions can be set to point.x and point.y
respectively. Changing the value of the multiplier (0.00001) will change the earth’s orbital
speed.
The moon’s position is set according to
moon.x = orbitRadius*cos(time*speed)
moon.z = orbitRadius*sin(time*speed)
Time was derived above. Speed is the orbital speed of the moon – you choose a sensible
value.
Optional Enhancements
Some optional enhancements follow.
Changing the viewpoint
It is possible to change the observer’s viewpoint by adding the following controls.
Insert the following line after the other import statement.
import { OrbitControls } from
"https://web.cs.manchester.ac.uk/three/three.jsmaster/examples/jsm/controls/OrbitControls.js";
Add a global variable with a suitable name, possibly controls.
Add the following two lines to the init() function:
controls = new OrbitControls(camera, renderer.domElement);
controls.autoRotate = true;
These add a controller to the scene and allow you to move the viewpoint by clicking and
dragging.
Texturing
The sun, earth and moon can be textured using textures from
https://www.solarsystemscope.com/textures/download/2k_sun.jpg
https://upload.wikimedia.org/wikipedia/commons/a/ac/Earthmap1000x500.jpg
https://svs.gsfc.nasa.gov/vis/a000000/a004700/a004720/lroc_color_poles_1k.jpg
To read these you’ll have to create one texture loader
const loader = new THREE.TextureLoader();
Textures can be loaded using this
var texture = loader.load(‘filename’); OR
var texture = loader.load(‘URL’);
And added to the material of the object you’re creating, by uncommenting the line in the
example above where you created the sun object.
The earth and moon textures can be added similarly, except you’ll add the line
map: texture,
to the material constructor. You’ll also need to delete the color property.
The problem you may encounter when attempting to run the code is that the resource fails
to load, and you have an error message such as
Access to image at <source> from origin 'null' has been blocked by CORS policy
This is a security feature of most modern browsers. You can set up a server on your host to
overcome this problem. Instructions are widely available on the web, specifically here
https://threejs.org/docs/index.html#manual/en/introduction/How-to-run-things-locally
If you’re using Chrome you can alternatively install an extension that allows CORS cross
origin loading (https://chrome.google.com/webstore/detail/allow-cors-accesscontrol/lhobafahddgcelffkeicbaginigeejlf?hl=en). Or in Safari you can explicitly turn off the
CORS checking.
Rotations
You can make the sun, Earth and Moon rotate on their axes, much like the cube rotated in
the previous exercise. Make sure you choose an appropriate length of the “day”.
Clouds
You could add clouds to the Earth. Find a cloud image (e.g.
https://i.stack.imgur.com/B3c7G.jpg) and add it as a transparent texture to a sphere mesh
that is slightly larger than the Earth. Make it rotate slightly slower than the Earth.
Background
You can also create a starry background for the scene. Make a very large sphere mesh – to
make sure it’s big enough to contain everything. Add a texture image of the Milky Way:
https://cdn.eso.org/images/screen/eso0932a.jpg
Make the sphere visible from inside as well as outside by setting the side member of the
material to THREE.DoubleSide.
Submission
Once you have a working solution, capture a short video of your solution, no more than 15
seconds long. It must demonstrate all the properties of your solar system, and not so
quickly that the marker can’t see them clearly (you’ll be penalised for videos that have so
much zooming or camera movement that it’s impossible to see the earth or moon rotating).
ZIP this and your html and submit the file to the Lab 2 area in Blackboard.
Submissions that are not in the ZIP format will not be marked.
Marking Scheme
We will endeavour to mark your work in face-to-face sessions in the scheduled labs.
You will receive marks for:
• The objects being in appropriate locations and moving appropriately.
請加QQ:99515681  郵箱:99515681@qq.com   WX:codehelp 

標(biāo)簽:

掃一掃在手機(jī)打開當(dāng)前頁
  • 上一篇:SCC312代做、代寫Java編程語言
  • 下一篇:代寫CSC8208、Java/c++編程語言代做
  • 無相關(guān)信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級風(fēng)景名勝區(qū)
    昆明西山國家級風(fēng)景名勝區(qū)
    昆明旅游索道攻略
    昆明旅游索道攻略
  • 短信驗證碼平臺 理財 WPS下載

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網(wǎng) 版權(quán)所有
    ICP備06013414號-3 公安備 42010502001045

    久久久久久精品无码人妻_青春草无码精品视频在线观_无码精品国产VA在线观看_国产色无码专区在线观看

    欧美xxxx吸乳| 欧美a v在线播放| 欧美日韩福利在线| 日韩av.com| 国产精品免费入口| 国产av熟女一区二区三区| 中文国产在线观看| 欧美美女一级片| 亚洲激情在线观看视频| 熟妇人妻va精品中文字幕| 免费看欧美黑人毛片| 91精品国产毛片武则天| 公共露出暴露狂另类av| 污污的网站免费| 亚洲一区日韩精品| 中文字幕 欧美日韩| 亚洲欧美自拍另类日韩| 伊人影院综合在线| 亚洲免费黄色录像| 日本黄色的视频| 国产高潮免费视频| 成人亚洲精品777777大片| 中文字幕第38页| gai在线观看免费高清| 在线观看免费不卡av| 国产无遮挡猛进猛出免费软件| jizz18女人| 夜夜爽久久精品91| www.亚洲一区二区| 国产在线拍揄自揄拍无码| 精品久久久无码人妻字幂| 男人添女荫道口喷水视频| 亚洲人成无码网站久久99热国产| 极品美女扒开粉嫩小泬| 日批视频在线免费看| 九九九在线观看视频| 2025韩国理伦片在线观看| 国产美女视频免费看| 女女同性女同一区二区三区按摩| 狠狠干视频网站| 日韩av综合在线观看| 992kp快乐看片永久免费网址| 中文字幕资源在线观看| 欧美一区二区三区综合| 久久综合久久久久| 欧美日韩第二页| 国产成人黄色网址| 一本二本三本亚洲码| 日韩av高清在线看片| 亚洲综合在线网站| 一级黄色免费在线观看| 久久99久久久久久| av观看免费在线| 天天久久综合网| 999一区二区三区| 免费日韩视频在线观看| 国产精欧美一区二区三区白种人| 欧美日韩激情四射| 国产xxxxx在线观看| 香蕉视频xxxx| 国产成人无码a区在线观看视频| 99re精彩视频| 秋霞无码一区二区| 伊人网在线综合| www.avtt| 亚洲综合激情视频| 免费看国产曰批40分钟| 中文字幕一区久久| www国产精品内射老熟女| 亚洲免费av一区| 精品少妇在线视频| 五月六月丁香婷婷| 国产l精品国产亚洲区久久| 小说区视频区图片区| 日韩久久一级片| 男人天堂成人网| 中文字幕欧美人妻精品一区| 一本色道久久88亚洲精品综合| 日本熟妇人妻中出| 天堂8在线天堂资源bt| 亚洲午夜精品一区| 欧美日韩国产精品激情在线播放| 性欧美18一19内谢| 可以免费在线看黄的网站| 黄色一级视频播放| 成年人在线观看视频免费| 免费网站在线观看视频| 亚洲精品国产一区二区三区| 免费在线观看亚洲视频| 大地资源第二页在线观看高清版| 日本三区在线观看| 在线观看av网页| 精品成在人线av无码免费看| 婷婷中文字幕在线观看| 欧美黄网站在线观看| 免费看欧美一级片| 一二三级黄色片| www.超碰com| 国产欧美在线一区| 91黄色在线看| 特色特色大片在线| 不卡中文字幕在线观看| 免费裸体美女网站| 一二三四视频社区在线| 免费成人进口网站| 精品国产鲁一鲁一区二区三区| 欧美一级片中文字幕| 成年人午夜免费视频| 欧美日韩中文字幕在线播放 | 福利在线一区二区三区| 黄色一级在线视频| 激情五月六月婷婷| 99精品视频网站| 91小视频在线播放| 色噜噜狠狠一区二区| 中文字幕第38页| 国产三级国产精品国产专区50| 久久久久久久少妇| av免费网站观看| 亚洲 中文字幕 日韩 无码| 97视频在线免费播放| 成人av一级片| 国产h视频在线播放| 熟女少妇在线视频播放| 日本xxxxxxxxxx75| 欧美 丝袜 自拍 制服 另类| 浮妇高潮喷白浆视频| 男人靠女人免费视频网站| 人妻久久久一区二区三区| 人妻无码视频一区二区三区| 黄色片免费在线观看视频| 91制片厂免费观看| 日本一级淫片演员| 青青在线视频免费观看| 免费看欧美一级片| 国产av国片精品| 免费看一级大黄情大片| 美女av免费在线观看| 日韩毛片在线免费看| 成年人视频在线免费| 网站一区二区三区| 中文字幕第100页| 午夜免费看毛片| 日本在线观看视频一区| 在线观看免费黄色片| 日本天堂免费a| 欧日韩免费视频| 97超碰青青草| 黄色av免费在线播放| 激情黄色小视频| 中文字幕一区二区三区四区五区人 | 97视频在线免费播放| 国产xxxxx视频| 中文字幕第17页| 午夜啪啪免费视频| www插插插无码免费视频网站| 日韩中字在线观看| 欧美少妇性生活视频| 日韩在线一区视频| 国产精品国产三级国产专区51| 青青青免费在线| 啊啊啊国产视频| 夜夜爽久久精品91| 大西瓜av在线| 五月婷婷之综合激情| 国产高清免费在线| 黄色影院一级片| 亚洲欧美视频二区| 国产成人一区二区三区别| 免费观看成人网| 日本xxx免费| 少妇性饥渴无码a区免费| 女同激情久久av久久| 日韩精品在线观看av| 五月婷婷深爱五月| 日韩精品久久一区二区| 熟女人妇 成熟妇女系列视频| 性欧美18一19内谢| 成人一级片网站| 99re99热| 啊啊啊国产视频| 成人在线视频一区二区三区| 国产视频一区二区三区在线播放| 99热一区二区三区| 天天操天天爽天天射| 日韩视频在线视频| 色综合五月婷婷| 男人揉女人奶房视频60分| 午夜免费福利网站| 激情网站五月天| 国产精品va在线观看无码| 欧美伦理片在线观看| 9久久9毛片又大又硬又粗| 国产一级片中文字幕| 成人在线观看a| 免费视频爱爱太爽了| 亚洲三级在线观看视频| 色综合av综合无码综合网站| 国产性生活免费视频| 欧美一级特黄aaa|