首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
data编程代写、代做java程序设计
项目预算:
开发周期:
发布时间:
要求地区:
159.235 2023 S02 — Assignment 2
This assignment covers the topics: coordinates, transformations, 3d modelling, and visible
surfaces.
Wireframe Data Viewer
Write a Java program that renders a 3 dimensional triangle wireframe surface data model
and allows one to rotate and scale the model so that it can be viewed from any direction.
This could be thought of as a simple CAD program.
Your application needs to be set up so that the ffgures rotate as the sliders are adjusting,
they uniformly resize after clicking the appropriate button, and they get re-drawn when
toggling between anti-aliasing on/off.
Use the simple viewing model where the “eye” point is on the positive z-axis looking down
and the ffgures are drawn by orthographically projecting onto the xy-plane.
You will need to decide how to transform the vertex coordinates in the wireframe data for
the given rotations and scalings. You can then draw each triangle on the Graphics2D canvas
with the transformed vertex positions.
Your rendered wireframe ffgures should appear “solid”—the wireframe outlines should be
clearly visible. You need to implement some procedure to remove hidden surfaces. You
should at least implement the back face culling method. You should ffnd that this will
remove most hidden surfaces—but not all of them. Top marks will be earned by those
programs that are able to remove all hidden surfaces.
Sample triangle mesh wireframe data ffles are provided on Stream. You program should
work smoothly with all of them.
You do not need to implement the 2D viewport clipping procedures described in the lectures.
You can let the Java AWT handle all that.
You do not need to apply any lighting or shading to the surfaces—this will be dealt with
later on in the course.
Completing the assignment
A set of startup Java source ffles are on Stream that will function as skeleton code for
the assignment. Load these into a new IntelliJ project and start up Main.java—this is the
“controller” part of your project. This features a number of JPanels with slider and button
widgets. Familiarize yourself with the various components in the project folder.
To complete the assignment, provide implementations for the other components. When
doing so you will need to make small adjustments to Main.java—mostly in the event handler
method. Complete as follows:
1. The Wireframe.java ffle contains a class that holds all data for a given triangle mesh
ffgure. Decide what data needs to be stored there. Provide an implementation inWireframeDataIO.java to read from a wireframe .tri ffle and create a new instance of
Wireframe
[2 marks]
2. Complete the implementation of the rotation matrix utilities in Transform3d.java. The
purpose of this utility is to be able to readily generate a full rotation matrix given
rotation angles in each of the 3 planes.
[2 marks]
3. Make appropriate modiffcation to the Wireframe class so that these rotations, as well
as scaling, can be applied to the triangle mesh data.
[3 marks]
4. Provide an implementation in WireframeDrawer.java to draw the triangles on a JPanel
using the transformed vertex positions. This needs to happen directly in response to
adjusting the sliders and clicking the buttons.
[3 marks]
5. Provide an implementation of back face culling. You will need to decide the appropriate
places in your project to make the modiffcations.
[4 marks]
6. Further modify your project to implement the Painter’s Algorithm. Here you will need
to decide on a suitable approach for deffning the “depth” of your triangles and how to
sort them.
[4 marks]
7. Implement the action following the anti-aliasing buttons, so that the lines will be
drawn with anti-aliasing either on or off. Decide how this will be actioned in the Main
controller. For this part is enough to use the anti-aliasing tools built-in with the Java
AWT.
[2 marks]
Due date: 2024 September 20, 11:55pm.
Please submit via the submission link on Stream.
Total 20 marks (20% of your ffnal grade).Coding hints
• To read and parse a text ffle (as in the wireframe data ffles), the JDK supplied
java.util.Scanner class is a useful utility. Create a Scanner object and use the .nextLine()
method to step through the ffle line-by-line. This method will give you a line in a ffle as
a String. Note: to use this utility, you will need to handle the FileNotFoundException.
• There are situations where you will need to split a String into sub-strings according to
some delimiter (e.g. space, tab, comma, . . .). Use the java.util.StringTokenizer for
this.
• To convert a String to a numeric value, use Integer.parseInt() or Double.parseDouble().
• It is suggested that you draw each triangle using something like:
// xDraw and yDraw are s i ze 3 arrays giving the t r iangle vertex positions
Polygon aTriangle = new Polygon(xDraw, yDraw, 3);
// . . . assign values to aTriangle . . .
// The implementation de tail s wil l depend upon how you have
// designed your program
g2.setColor(Color.gray);
g2.fill(aTriangle); // Colour in the t r iangle surface
g2.setColor(Color.black);
g2.draw(aTriangle); // Draw the t r iangle outline
Note that xDraw and yDraw are integer arrays.
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
代做 program、代写 c++设计程...
2024-12-23
comp2012j 代写、代做 java 设...
2024-12-23
代做 data 编程、代写 python/...
2024-12-23
代做en.553.413-613 applied s...
2024-12-23
代做steady-state analvsis代做...
2024-12-23
代写photo essay of a deciduo...
2024-12-23
代写gpa analyzer调试c/c++语言
2024-12-23
代做comp 330 (fall 2024): as...
2024-12-23
代写pstat 160a fall 2024 - a...
2024-12-23
代做pstat 160a: stochastic p...
2024-12-23
代做7ssgn110 environmental d...
2024-12-23
代做compsci 4039 programming...
2024-12-23
代做lab exercise 8: dictiona...
2024-12-23
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!