first commit

master
王宇洋 3 years ago
parent 8f896d27e9
commit 23e7b1ba9e

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="lib" path="LWJGL/AppleJavaExtensions.jar"/>
<classpathentry kind="lib" path="LWJGL/asm-debug-all.jar"/>
<classpathentry kind="lib" path="LWJGL/jinput.jar"/>
<classpathentry kind="lib" path="LWJGL/laf-plugin-7.2.1.jar"/>
<classpathentry kind="lib" path="LWJGL/laf-widget-7.2.1.jar"/>
<classpathentry kind="lib" path="LWJGL/log4j-api-2.0-beta9.jar"/>
<classpathentry kind="lib" path="LWJGL/lwjgl_test.jar"/>
<classpathentry kind="lib" path="LWJGL/lwjgl_util_applet.jar"/>
<classpathentry kind="lib" path="LWJGL/lwjgl_util.jar"/>
<classpathentry kind="lib" path="LWJGL/lwjgl-debug.jar"/>
<classpathentry kind="lib" path="LWJGL/lwjgl.jar"/>
<classpathentry kind="lib" path="LWJGL/lzma.jar"/>
<classpathentry kind="lib" path="LWJGL/substance-7.2.1.jar"/>
<classpathentry kind="lib" path="LWJGL/trident-7.2.1.jar"/>
<classpathentry kind="lib" path="LWJGL/slick-util.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

8
.idea/.gitignore vendored

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1 @@
Assignment3

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="JDK1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Assignment3.iml" filepath="$PROJECT_DIR$/Assignment3.iml" />
</modules>
</component>
</project>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
</set>
</option>
</component>
</project>

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Assignment3</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="EclipseModuleManager">
<libelement value="jar://$MODULE_DIR$/LWJGL/AppleJavaExtensions.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/asm-debug-all.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/jinput.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/laf-plugin-7.2.1.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/laf-widget-7.2.1.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/log4j-api-2.0-beta9.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/lwjgl_test.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/lwjgl_util_applet.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/lwjgl_util.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/lwjgl-debug.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/lwjgl.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/lzma.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/substance-7.2.1.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/trident-7.2.1.jar!/" />
<libelement value="jar://$MODULE_DIR$/LWJGL/slick-util.jar!/" />
<src_description expected_position="0">
<src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
</src_description>
</component>
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/bin" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="jdk" jdkName="JavaSE-1.8" jdkType="JavaSDK" />
<orderEntry type="module-library">
<library name="AppleJavaExtensions.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/AppleJavaExtensions.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="asm-debug-all.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/asm-debug-all.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="jinput.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/jinput.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="laf-plugin-7.2.1.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/laf-plugin-7.2.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="laf-widget-7.2.1.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/laf-widget-7.2.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="log4j-api-2.0-beta9.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/log4j-api-2.0-beta9.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="lwjgl_test.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/lwjgl_test.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="lwjgl_util_applet.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/lwjgl_util_applet.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="lwjgl_util.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/lwjgl_util.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="lwjgl-debug.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/lwjgl-debug.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="lwjgl.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/lwjgl.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="lzma.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/lzma.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="substance-7.2.1.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/substance-7.2.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="trident-7.2.1.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/trident-7.2.1.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library name="slick-util.jar">
<CLASSES>
<root url="jar://$MODULE_DIR$/LWJGL/slick-util.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,3 @@
Manifest-Version: 1.0
Main-Class: MainWindow

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@ -0,0 +1,27 @@
{
"rdocCaptureSettings": 1,
"settings": {
"autoStart": false,
"commandLine": "-jar Assignment3.jar",
"environment": [
],
"executable": "/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/bin/java",
"inject": false,
"numQueuedFrames": 0,
"options": {
"allowFullscreen": true,
"allowVSync": true,
"apiValidation": false,
"captureAllCmdLists": false,
"captureCallstacks": false,
"captureCallstacksOnlyDraws": false,
"debugOutputMute": true,
"delayForDebugger": 0,
"hookIntoChildren": false,
"refAllResources": false,
"verifyBufferAccess": false
},
"queuedFrameCap": 0,
"workingDir": "/Users/yuyangwang/Desktop/Programs_In_BDIC/Stage 3 Semester 1/Computer Graphic/Computer_Graphic_Assignemnt_3/classes/artifacts/Assignment3_jar"
}
}

@ -0,0 +1,612 @@
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fff202c44af, pid=87864, tid=0x0000000000000f03
#
# JRE version: Java(TM) SE Runtime Environment (8.0_271-b09) (build 1.8.0_271-b09)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.271-b09 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# C [libobjc.A.dylib+0x84af] objc_release+0x1f
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
--------------- T H R E A D ---------------
Current thread (0x00007f9be6809000): JavaThread "main" [_thread_in_native, id=3843, stack(0x000070000727d000,0x000070000737d000)]
siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000020
Registers:
RAX=0x0000000000000000, RBX=0x0000000000000001, RCX=0x0000000000000000, RDX=0x0000000000000009
RSP=0x000070000737c4a8, RBP=0x000070000737c4e0, RSI=0x00007f9be8440890, RDI=0x00007f9be654fba0
R8 =0x00007f9bea92a8c8, R9 =0x0000000000000000, R10=0x00007f9be6548ae0, R11=0x00007fff22cefb3a
R12=0x00007f9be654fba0, R13=0xa3a3a3a3a3a3a3a3, R14=0x00007f9be6826078, R15=0x00007f9be6826000
RIP=0x00007fff202c44af, EFLAGS=0x0000000000010246, ERR=0x0000000000000004
TRAPNO=0x000000000000000e
Top of Stack: (sp=0x000070000737c4a8)
0x000070000737c4a8: 00007fff202e220f c5b95a3319340000
0x000070000737c4b8: 00007f9be6826000 00007f9be6728860
0x000070000737c4c8: 000000011296a308 00007fff7bb1bfbf
0x000070000737c4d8: 00007f9be68091f8 000070000737c500
0x000070000737c4e8: 00007fff202c4e30 c5b95a3319340051
0x000070000737c4f8: 00007f9be6826078 000070000737c520
0x000070000737c508: 00007fff204dea66 c5b95a3319340051
0x000070000737c518: 00007f9be6728860 000070000737c560
0x000070000737c528: 00007fff2126a123 00007fff873360d8
0x000070000737c538: 0000000000000000 00007f9be84444e0
0x000070000737c548: c5b95a3319340051 00007f9be84404b0
0x000070000737c558: 00007f9be8428a30 000070000737c590
0x000070000737c568: 0000000137f0ecce 000000011296a310
0x000070000737c578: 0000000000000000 000070000737c618
0x000070000737c588: 00007f9be6809000 000070000737c5f0
0x000070000737c598: 000000011e8186c7 000000076b7e7910
0x000070000737c5a8: 000000011e8183e2 000070000737c5b0
0x000070000737c5b8: 000000011296a308 000070000737c618
0x000070000737c5c8: 000000011296a870 0000000000000000
0x000070000737c5d8: 000000011296a310 0000000000000000
0x000070000737c5e8: 000070000737c610 000070000737c660
0x000070000737c5f8: 000000011e8082bd 000000076b8d4c68
0x000070000737c608: 000000011e811d18 000000076b8e9398
0x000070000737c618: 000000076b7e7910 000070000737c620
0x000070000737c628: 000000011296a20f 000070000737c690
0x000070000737c638: 000000011296a870 0000000000000000
0x000070000737c648: 000000011296a280 000070000737c610
0x000070000737c658: 000070000737c680 000070000737c6e8
0x000070000737c668: 000000011e808302 0000000000000000
0x000070000737c678: 000000076b7e7910 000000076b8e9398
0x000070000737c688: 000000076b7e7858 000000076b8d4cf8
0x000070000737c698: 0000000000000001 000000076b8d4d08
Instructions: (pc=0x00007fff202c44af)
0x00007fff202c448f: 90 48 85 ff 74 76 89 f8 83 e0 01 48 85 c0 75 6c
0x00007fff202c449f: 48 8b 07 48 b9 f8 ff ff ff ff 7f 00 00 48 21 c1
0x00007fff202c44af: 48 8b 51 20 f6 c2 04 74 54 a8 01 74 6f 48 b9 00
0x00007fff202c44bf: 00 00 00 00 00 80 00 48 ba 00 00 00 00 00 00 00
Register to memory mapping:
RAX=0x0000000000000000 is an unknown value
RBX=0x0000000000000001 is an unknown value
RCX=0x0000000000000000 is an unknown value
RDX=0x0000000000000009 is an unknown value
RSP=0x000070000737c4a8 is pointing into the stack for thread: 0x00007f9be6809000
RBP=0x000070000737c4e0 is pointing into the stack for thread: 0x00007f9be6809000
RSI=0x00007f9be8440890 is an unknown value
RDI=0x00007f9be654fba0 is an unknown value
R8 =0x00007f9bea92a8c8 is an unknown value
R9 =0x0000000000000000 is an unknown value
R10=0x00007f9be6548ae0 is an unknown value
R11=0x00007fff22cefb3a: -[NSResponder release]+0 in /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit at 0x00007fff22ce4000
R12=0x00007f9be654fba0 is an unknown value
R13=0xa3a3a3a3a3a3a3a3 is an unknown value
R14=0x00007f9be6826078 is an unknown value
R15=0x00007f9be6826000 is an unknown value
Stack: [0x000070000727d000,0x000070000737d000], sp=0x000070000737c4a8, free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libobjc.A.dylib+0x84af] objc_release+0x1f
C [libobjc.A.dylib+0x8e30] objc_autoreleasePoolPop+0xa1
C [CoreFoundation+0x42a66] _CFAutoreleasePoolPop+0x16
C [Foundation+0x1f123] -[NSAutoreleasePool release]+0x83
C [liblwjgl.dylib+0x16cce] Java_org_lwjgl_opengl_MacOSXContextImplementation_setView+0x10e
j org.lwjgl.opengl.MacOSXContextImplementation.setView(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)V+0
j org.lwjgl.opengl.MacOSXContextImplementation.makeCurrent(Lorg/lwjgl/opengl/PeerInfo;Ljava/nio/ByteBuffer;)V+7
j org.lwjgl.opengl.ContextGL.makeCurrent()V+46
j org.lwjgl.opengl.DrawableGL.makeCurrent()V+14
j org.lwjgl.opengl.Display.makeCurrent()V+3
j org.lwjgl.opengl.Display.makeCurrentAndSetSwapInterval()V+0
j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;Lorg/lwjgl/opengl/Drawable;Lorg/lwjgl/opengl/ContextAttribs;)V+108
j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;)V+12
j org.lwjgl.opengl.Display.create()V+7
j MainWindow.start()V+24
j MainWindow.main([Ljava/lang/String;)V+9
v ~StubRoutines::call_stub
V [libjvm.dylib+0x2d4795] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x771
V [libjvm.dylib+0x30582b] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x279
V [libjvm.dylib+0x308edb] jni_CallStaticVoidMethod+0x1f6
C [java+0x316c] JavaMain+0x9dc
C [libsystem_pthread.dylib+0x68fc] _pthread_start+0xe0
C [libsystem_pthread.dylib+0x2443] thread_start+0xf
C 0x0000000000000000
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j org.lwjgl.opengl.MacOSXContextImplementation.setView(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)V+0
j org.lwjgl.opengl.MacOSXContextImplementation.makeCurrent(Lorg/lwjgl/opengl/PeerInfo;Ljava/nio/ByteBuffer;)V+7
j org.lwjgl.opengl.ContextGL.makeCurrent()V+46
j org.lwjgl.opengl.DrawableGL.makeCurrent()V+14
j org.lwjgl.opengl.Display.makeCurrent()V+3
j org.lwjgl.opengl.Display.makeCurrentAndSetSwapInterval()V+0
j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;Lorg/lwjgl/opengl/Drawable;Lorg/lwjgl/opengl/ContextAttribs;)V+108
j org.lwjgl.opengl.Display.create(Lorg/lwjgl/opengl/PixelFormat;)V+12
j org.lwjgl.opengl.Display.create()V+7
j MainWindow.start()V+24
j MainWindow.main([Ljava/lang/String;)V+9
v ~StubRoutines::call_stub
--------------- P R O C E S S ---------------
Java Threads: ( => current thread )
0x00007f9be98d5800 JavaThread "Attach Listener" daemon [_thread_blocked, id=71695, stack(0x00007000098fb000,0x00007000099fb000)]
0x00007f9bea8eb800 JavaThread "AWT-Shutdown" [_thread_blocked, id=34587, stack(0x00007000094e6000,0x00007000095e6000)]
0x00007f9be8895000 JavaThread "AppKit Thread" daemon [_thread_in_native, id=259, stack(0x00007ffedf83d000,0x00007ffee003d000)]
0x00007f9be6827000 JavaThread "Service Thread" daemon [_thread_blocked, id=39683, stack(0x00007000092e0000,0x00007000093e0000)]
0x00007f9bea834000 JavaThread "C1 CompilerThread11" daemon [_thread_blocked, id=40195, stack(0x00007000091dd000,0x00007000092dd000)]
0x00007f9be91c3000 JavaThread "C1 CompilerThread10" daemon [_thread_blocked, id=24067, stack(0x00007000090da000,0x00007000091da000)]
0x00007f9be782c000 JavaThread "C1 CompilerThread9" daemon [_thread_blocked, id=23811, stack(0x0000700008fd7000,0x00007000090d7000)]
0x00007f9be782b800 JavaThread "C1 CompilerThread8" daemon [_thread_blocked, id=23555, stack(0x0000700008ed4000,0x0000700008fd4000)]
0x00007f9be782a800 JavaThread "C2 CompilerThread7" daemon [_thread_blocked, id=23299, stack(0x0000700008dd1000,0x0000700008ed1000)]
0x00007f9be782a000 JavaThread "C2 CompilerThread6" daemon [_thread_blocked, id=22787, stack(0x0000700008cce000,0x0000700008dce000)]
0x00007f9bea833000 JavaThread "C2 CompilerThread5" daemon [_thread_blocked, id=41731, stack(0x0000700008bcb000,0x0000700008ccb000)]
0x00007f9be701d800 JavaThread "C2 CompilerThread4" daemon [_thread_blocked, id=42243, stack(0x0000700008ac8000,0x0000700008bc8000)]
0x00007f9be7821000 JavaThread "C2 CompilerThread3" daemon [_thread_blocked, id=22531, stack(0x00007000089c5000,0x0000700008ac5000)]
0x00007f9be6823000 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=22275, stack(0x00007000088c2000,0x00007000089c2000)]
0x00007f9be7820800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=22019, stack(0x00007000087bf000,0x00007000088bf000)]
0x00007f9be915f800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=21763, stack(0x00007000086bc000,0x00007000087bc000)]
0x00007f9be915d000 JavaThread "Monitor Ctrl-Break" daemon [_thread_in_native, id=15619, stack(0x00007000085b9000,0x00007000086b9000)]
0x00007f9be901b800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=16131, stack(0x00007000084b6000,0x00007000085b6000)]
0x00007f9be701b800 JavaThread "Finalizer" daemon [_thread_blocked, id=13571, stack(0x00007000082ad000,0x00007000083ad000)]
0x00007f9be7019000 JavaThread "Reference Handler" daemon [_thread_blocked, id=18435, stack(0x00007000081aa000,0x00007000082aa000)]
=>0x00007f9be6809000 JavaThread "main" [_thread_in_native, id=3843, stack(0x000070000727d000,0x000070000737d000)]
Other Threads:
0x00007f9be7012800 VMThread [stack: 0x00007000080a7000,0x00007000081a7000] [id=18691]
0x00007f9be982e000 WatcherThread [stack: 0x00007000093e3000,0x00007000094e3000] [id=39171]
VM state:not at safepoint (normal execution)
VM Mutex/Monitor currently owned by a thread: None
heap address: 0x00000006c0000000, size: 4096 MB, Compressed Oops mode: Zero based, Oop shift amount: 3
Narrow klass base: 0x0000000000000000, Narrow klass shift: 3
Compressed class space size: 1073741824 Address: 0x00000007c0000000
Heap:
PSYoungGen total 76288K, used 17089K [0x000000076ab00000, 0x0000000770000000, 0x00000007c0000000)
eden space 65536K, 26% used [0x000000076ab00000,0x000000076bbb0610,0x000000076eb00000)
from space 10752K, 0% used [0x000000076f580000,0x000000076f580000,0x0000000770000000)
to space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000)
ParOldGen total 175104K, used 0K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000)
object space 175104K, 0% used [0x00000006c0000000,0x00000006c0000000,0x00000006cab00000)
Metaspace used 5995K, capacity 6194K, committed 6400K, reserved 1056768K
class space used 667K, capacity 729K, committed 768K, reserved 1048576K
Card table byte_map: [0x0000000110e90000,0x0000000111691000] byte_map_base: 0x000000010d890000
Marking Bits: (ParMarkBitMap*) 0x000000011032a768
Begin Bits: [0x000000012d800000, 0x0000000131800000)
End Bits: [0x0000000131800000, 0x0000000135800000)
Polling page: 0x0000000110a53000
CodeCache: size=245760Kb used=3812Kb max_used=3813Kb free=241947Kb
bounds [0x000000011e800000, 0x000000011ebc0000, 0x000000012d800000]
total_blobs=732 nmethods=428 adapters=215
compilation: enabled
Compilation events (10 events):
Event: 1.725 Thread 0x00007f9be782b800 425 3 java.nio.Buffer::remaining (10 bytes)
Event: 1.725 Thread 0x00007f9bea834000 424 3 java.lang.Integer::valueOf (32 bytes)
Event: 1.725 Thread 0x00007f9be782b800 nmethod 425 0x000000011ebb9590 code [0x000000011ebb96e0, 0x000000011ebb9830]
Event: 1.725 Thread 0x00007f9be91c3000 426 3 java.lang.ClassLoader::loadClass (7 bytes)
Event: 1.726 Thread 0x00007f9bea834000 nmethod 424 0x000000011ebb8f10 code [0x000000011ebb90a0, 0x000000011ebb93f0]
Event: 1.726 Thread 0x00007f9be91c3000 nmethod 426 0x000000011ebb8b10 code [0x000000011ebb8c80, 0x000000011ebb8e88]
Event: 1.728 Thread 0x00007f9be782c000 427 3 sun.misc.Launcher$AppClassLoader::loadClass (85 bytes)
Event: 1.728 Thread 0x00007f9bea834000 428 s 3 sun.misc.URLClassPath::knownToNotExist (24 bytes)
Event: 1.728 Thread 0x00007f9bea834000 nmethod 428 0x000000011ebb8510 code [0x000000011ebb8680, 0x000000011ebb8a48]
Event: 1.728 Thread 0x00007f9be782c000 nmethod 427 0x000000011ebb7110 code [0x000000011ebb7340, 0x000000011ebb8068]
GC Heap History (0 events):
No events
Deoptimization events (0 events):
No events
Classes redefined (0 events):
No events
Internal exceptions (10 events):
Event: 0.031 Thread 0x00007f9be6809000 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; name or signature does not match> (0x000000076ab07cc0) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/s
Event: 0.031 Thread 0x00007f9be6809000 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.prefetchRead(Ljava/lang/Object;J)V name or signature does not match> (0x000000076ab07fa8) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jni.
Event: 0.136 Thread 0x00007f9be6809000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076ae44a68) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jvm.cpp, line 1512]
Event: 0.136 Thread 0x00007f9be6809000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076ae44c78) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jvm.cpp, line 1512]
Event: 0.136 Thread 0x00007f9be6809000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076ae48190) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jvm.cpp, line 1512]
Event: 0.136 Thread 0x00007f9be6809000 Exception <a 'java/security/PrivilegedActionException'> (0x000000076ae483a0) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jvm.cpp, line 1512]
Event: 0.175 Thread 0x00007f9be6809000 Exception <a 'java/lang/NoSuchFieldError': method resolution failed> (0x000000076b35cef0) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/methodHandles.cpp, line 1169]
Event: 0.177 Thread 0x00007f9be6809000 Exception <a 'java/lang/NoSuchFieldError': method resolution failed> (0x000000076b36aee0) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/methodHandles.cpp, line 1169]
Event: 0.508 Thread 0x00007f9be6809000 Exception <a 'java/io/FileNotFoundException'> (0x000000076b558348) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jni.cpp, line 710]
Event: 0.508 Thread 0x00007f9be6809000 Exception <a 'java/io/FileNotFoundException'> (0x000000076b558ed0) thrown at [/jenkins/workspace/8-2-build-macosx-x86_64/jdk8u271/605/hotspot/src/share/vm/prims/jni.cpp, line 710]
Events (10 events):
Event: 1.726 loading class org/lwjgl/opengl/ContextImplementation
Event: 1.726 loading class org/lwjgl/opengl/ContextImplementation done
Event: 1.727 loading class org/lwjgl/opengl/MacOSXContextImplementation
Event: 1.727 loading class org/lwjgl/opengl/MacOSXContextImplementation done
Event: 1.727 loading class org/lwjgl/opengl/GLContext
Event: 1.727 loading class org/lwjgl/opengl/GLContext done
Event: 1.728 loading class java/lang/NumberFormatException
Event: 1.728 loading class java/lang/NumberFormatException done
Event: 1.729 loading class org/lwjgl/opengl/GLContext$CapabilitiesCacheEntry
Event: 1.729 loading class org/lwjgl/opengl/GLContext$CapabilitiesCacheEntry done
Dynamic libraries:
0x00007fff34f6e000 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
0x00007fff222b3000 /System/Library/Frameworks/Security.framework/Versions/A/Security
0x00007fff33176000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
0x00007fff2a535000 /usr/lib/libz.1.dylib
0x00007fff2a5fd000 /usr/lib/libSystem.B.dylib
0x00007fff2049c000 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
0x00007fff2124b000 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
0x00007fff202bc000 /usr/lib/libobjc.A.dylib
0x00007fff22ce4000 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
0x00007fff25ba8000 /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
0x00007fff23a30000 /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation
0x00007fff2fc30000 /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
0x00007fff28a41000 /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap
0x00007fff2b726000 /usr/lib/libspindump.dylib
0x00007fff23c7f000 /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers
0x00007fff27245000 /usr/lib/libapp_launch_measurement.dylib
0x00007fff27248000 /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout
0x00007fff283a8000 /System/Library/Frameworks/Metal.framework/Versions/A/Metal
0x00007fff2909e000 /usr/lib/liblangid.dylib
0x00007fff28a45000 /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG
0x00007fff24cbf000 /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight
0x00007fff25025000 /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
0x00007fff30157000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
0x00007fff2b164000 /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices
0x00007fff2838c000 /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
0x00007fff26530000 /usr/lib/libDiagnosticMessagesClient.dylib
0x00007fff28a2d000 /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation
0x00007fff2260b000 /usr/lib/libicucore.A.dylib
0x00007fff2cc6f000 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
0x00007fff2bef7000 /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
0x00007fff24c32000 /usr/lib/libMobileGestalt.dylib
0x00007fff28731000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
0x00007fff26c8a000 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
0x00007fff2fc68000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
0x00007fff26faa000 /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
0x00007fff21c21000 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
0x00007fff2661b000 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
0x00007fff2baf4000 /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
0x00007fff2beee000 /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport
0x00007fff24c31000 /usr/lib/libenergytrace.dylib
0x00007fff22bdb000 /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
0x00007fff2ff9b000 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
0x00007fff271d7000 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
0x00007fff6bb06000 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
0x00007fff2bf72000 /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity
0x00007fff256af000 /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync
0x00007fff28cac000 /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage
0x00007fff21a3b000 /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
0x00007fff28a6f000 /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
0x00007fff2a603000 /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking
0x00007fff27290000 /usr/lib/libxml2.2.dylib
0x00007fff20382000 /usr/lib/libc++.1.dylib
0x00007fff2a874000 /usr/lib/libcompression.dylib
0x00007fff2be20000 /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO
0x00007fff2aea3000 /usr/lib/libate.dylib
0x00007fff2a5f7000 /usr/lib/system/libcache.dylib
0x00007fff2a5b3000 /usr/lib/system/libcommonCrypto.dylib
0x00007fff2a5dd000 /usr/lib/system/libcompiler_rt.dylib
0x00007fff2a5d2000 /usr/lib/system/libcopyfile.dylib
0x00007fff201ac000 /usr/lib/system/libcorecrypto.dylib
0x00007fff20277000 /usr/lib/system/libdispatch.dylib
0x00007fff2042a000 /usr/lib/system/libdyld.dylib
0x00007fff2a5ee000 /usr/lib/system/libkeymgr.dylib
0x00007fff2da06000 /usr/lib/system/liblaunch.dylib
0x00007fff2a591000 /usr/lib/system/libmacho.dylib
0x00007fff29d89000 /usr/lib/system/libquarantine.dylib
0x00007fff2a5eb000 /usr/lib/system/libremovefile.dylib
0x00007fff24c8f000 /usr/lib/system/libsystem_asl.dylib
0x00007fff2015c000 /usr/lib/system/libsystem_blocks.dylib
0x00007fff202f9000 /usr/lib/system/libsystem_c.dylib
0x00007fff2a5e5000 /usr/lib/system/libsystem_collections.dylib
0x00007fff2908f000 /usr/lib/system/libsystem_configuration.dylib
0x00007fff2837b000 /usr/lib/system/libsystem_containermanager.dylib
0x00007fff2a334000 /usr/lib/system/libsystem_coreservices.dylib
0x00007fff2286b000 /usr/lib/system/libsystem_darwin.dylib
0x00007fff2a5ef000 /usr/lib/system/libsystem_dnssd.dylib
0x00007fff202f6000 /usr/lib/system/libsystem_featureflags.dylib
0x00007fff20470000 /usr/lib/system/libsystem_info.dylib
0x00007fff2a548000 /usr/lib/system/libsystem_m.dylib
0x00007fff2024a000 /usr/lib/system/libsystem_malloc.dylib
0x00007fff24c22000 /usr/lib/system/libsystem_networkextension.dylib
0x00007fff22c8a000 /usr/lib/system/libsystem_notify.dylib
0x00007fff2fe9d000 /usr/lib/system/libsystem_product_info_filter.dylib
0x00007fff29093000 /usr/lib/system/libsystem_sandbox.dylib
0x00007fff2a5e8000 /usr/lib/system/libsystem_secinit.dylib
0x00007fff203ee000 /usr/lib/system/libsystem_kernel.dylib
0x00007fff20466000 /usr/lib/system/libsystem_platform.dylib
0x00007fff2041e000 /usr/lib/system/libsystem_pthread.dylib
0x00007fff2636c000 /usr/lib/system/libsystem_symptoms.dylib
0x00007fff20194000 /usr/lib/system/libsystem_trace.dylib
0x00007fff2a5bf000 /usr/lib/system/libunwind.dylib
0x00007fff2015e000 /usr/lib/system/libxpc.dylib
0x00007fff203d8000 /usr/lib/libc++abi.dylib
0x00007fff2a5ca000 /usr/lib/liboah.dylib
0x00007fff2ac88000 /usr/lib/liblzma.5.dylib
0x00007fff20f5f000 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
0x00007fff2a5ff000 /usr/lib/libfakelink.dylib
0x00007fff24783000 /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
0x00007fff2a73f000 /usr/lib/libarchive.2.dylib
0x00007fff20fdd000 /usr/lib/libCRFSuite.dylib
0x00007fff29db0000 /usr/lib/libbsm.0.dylib
0x00007fff240fc000 /usr/lib/libnetwork.dylib
0x00007fff2a604000 /usr/lib/libpcap.A.dylib
0x00007fff26365000 /usr/lib/libdns_services.dylib
0x00007fff2aca1000 /usr/lib/libcoretls_cfhelpers.dylib
0x00007fff2a83e000 /usr/lib/libapple_nghttp2.dylib
0x00007fff2a597000 /usr/lib/system/libkxld.dylib
0x00007fff25fde000 /usr/lib/libsqlite3.dylib
0x00007fff2a317000 /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
0x00007fff29d98000 /usr/lib/libcoretls.dylib
0x00007fff2a86f000 /usr/lib/libpam.2.dylib
0x00007fff2ad9f000 /usr/lib/libxar.1.dylib
0x00007fff2909a000 /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo
0x00007fff299da000 /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer
0x00007fff2a327000 /usr/lib/libbz2.1.0.dylib
0x00007fff2a63c000 /usr/lib/libiconv.2.dylib
0x00007fff2a590000 /usr/lib/libcharset.1.dylib
0x00007fff27213000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents
0x00007fff22875000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
0x00007fff26580000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
0x00007fff2a339000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
0x00007fff2a7b1000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
0x00007fff262f0000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
0x00007fff2093a000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
0x00007fff2ac38000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
0x00007fff27220000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList
0x00007fff29d8c000 /usr/lib/libCheckFix.dylib
0x00007fff24ca6000 /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
0x00007fff290a0000 /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP
0x00007fff26533000 /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities
0x00007fff21012000 /usr/lib/libmecabra.dylib
0x00007fff2a096000 /System/Library/Frameworks/MLCompute.framework/Versions/A/MLCompute
0x00007fff29dc1000 /usr/lib/libmecab.dylib
0x00007fff29e0b000 /usr/lib/libgermantok.dylib
0x00007fff2a819000 /usr/lib/libThaiTokenizer.dylib
0x00007fff2adda000 /usr/lib/libChineseTokenizer.dylib
0x00007fff2a86d000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders
0x00007fff26622000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
0x00007fff2ff75000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
0x00007fff2ade5000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
0x00007fff297f5000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
0x00007fff20c45000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
0x00007fff2a89a000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
0x00007fff29e11000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib
0x00007fff2a856000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib
0x00007fff2a894000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib
0x00007fff2914c000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
0x00007fff20ef0000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib
0x00007fff29028000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore
0x00007fff2a286000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage
0x00007fff29e27000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork
0x00007fff2a1f8000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix
0x00007fff2a046000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector
0x00007fff2a22f000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray
0x00007fff20b70000 /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools
0x00007fff29098000 /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary
0x00007fff26500000 /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics
0x00007fff2a81b000 /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce
0x00007fff2839e000 /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator
0x00007fff6bafa000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib
0x00007fff215aa000 /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling
0x00007fff299c8000 /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji
0x00007fff29145000 /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData
0x00007fff20ea2000 /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon
0x00007fff2a72d000 /usr/lib/libcmph.dylib
0x00007fff271f3000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
0x00007fff271e3000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
0x00007fff2aca3000 /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS
0x00007fff29cee000 /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
0x00007fff2adad000 /usr/lib/libutil.dylib
0x00007fff22ba0000 /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore
0x00007fff29d84000 /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
0x00007fff2adb1000 /usr/lib/libxslt.1.dylib
0x00007fff29d7a000 /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement
0x00007fff2bd6a000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
0x00007fff2bd74000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
0x00007fff2bcbe000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
0x00007fff2bce5000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
0x00007fff2bdc9000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
0x00007fff2ba10000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
0x00007fff2b12c000 /usr/lib/libexpat.1.dylib
0x00007fff2b9c6000 /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG
0x00007fff285d4000 /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib
0x00007fff262a7000 /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices
0x00007fff2baf0000 /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient
0x00007fff21693000 /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay
0x00007fff284e9000 /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia
0x00007fff27373000 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
0x00007fff2bb2b000 /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox
0x00007fff26227000 /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard
0x00007fff2b270000 /System/Library/PrivateFrameworks/PersistentConnection.framework/Versions/A/PersistentConnection
0x00007fff25fc8000 /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer
0x00007fff2620f000 /System/Library/PrivateFrameworks/CommonUtilities.framework/Versions/A/CommonUtilities
0x00007fff2b989000 /System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom
0x00007fff2bd62000 /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler
0x00007fff2bd45000 /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment
0x00007fff2bd6e000 /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay
0x00007fff2bdce000 /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore
0x00007fff2b70c000 /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport
0x00007fff2d7a9000 /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata
0x00007fff29cdd000 /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices
0x00007fff217ca000 /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore
0x00007fff284cc000 /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk
0x00007fff3cc55000 /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy
0x00007fff2af3b000 /usr/lib/libIOReport.dylib
0x00007fff2cfe5000 /usr/lib/libSMC.dylib
0x00007fff2bc8a000 /usr/lib/libAudioToolboxUtility.dylib
0x00007fff3d5b2000 /usr/lib/libmis.dylib
0x00007fff6bb56000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
0x00007fff6bb19000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
0x00007fff6bd27000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
0x00007fff6bb22000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
0x00007fff6bb16000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
0x00007fff6bb01000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
0x00007fff6d171000 /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
0x00007fff2b299000 /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer
0x00007fff2b2a8000 /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore
0x00007fff2b6c4000 /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG
0x00007fff26f68000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
0x00007fff2b713000 /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib
0x00007fff2b0d8000 /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA
0x00007fff2ce2d000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
0x00007fff2d140000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy
0x00007fff257a6000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
0x00007fff2d125000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
0x00007fff2bdd8000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
0x00007fff2d148000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
0x00007fff2ce1d000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
0x00007fff2bd99000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI
0x00007fff2d0c5000 /usr/lib/libcups.2.dylib
0x00007fff2d135000 /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
0x00007fff2d7c4000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
0x00007fff2d7d4000 /System/Library/Frameworks/GSS.framework/Versions/A/GSS
0x00007fff2ce9a000 /usr/lib/libresolv.9.dylib
0x00007fff2b729000 /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
0x00007fff3348b000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib
0x00007fff26374000 /System/Library/Frameworks/Network.framework/Versions/A/Network
0x00007fff2b145000 /usr/lib/libheimdal-asn1.dylib
0x00007fff2d825000 /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
0x00007fff273c1000 /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport
0x00007fff2cda4000 /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession
0x00007fff2ce0a000 /usr/lib/libAudioStatistics.dylib
0x00007fff2b1d1000 /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience
0x00007fff2cc3d000 /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib
0x00007fff2d7b5000 /usr/lib/libperfcheck.dylib
0x00007fff2d154000 /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration
0x00007fff2b14f000 /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation
0x00007fff2fc58000 /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore
0x000000010fc01000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/server/libjvm.dylib
0x0000000110a0f000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libverify.dylib
0x0000000110a20000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libjava.dylib
0x0000000110a54000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libinstrument.dylib
0x0000000110ac3000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libzip.dylib
0x0000000114eb5000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libnet.dylib
0x0000000114ed4000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libawt.dylib
0x0000000114f74000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libmlib_image.dylib
0x00007fff6eaa6000 /System/Library/Frameworks/JavaNativeFoundation.framework/Versions/A/JavaNativeFoundation
0x00007fff6eab2000 /System/Library/Frameworks/JavaRuntimeSupport.framework/Versions/A/JavaRuntimeSupport
0x00007fff3c99f000 /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
0x00007fff31ac9000 /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
0x00007fff36436000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
0x00007fff32f20000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
0x00007fff3643a000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
0x00007fff3640a000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
0x00007fff36432000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
0x00007fff3c99b000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
0x00007fff3642e000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
0x00007fff31a8d000 /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
0x0000000115033000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libawt_lwawt.dylib
0x00000001150e2000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libosxapp.dylib
0x00007fff3bfb6000 /System/Library/Frameworks/ExceptionHandling.framework/Versions/A/ExceptionHandling
0x00007fff22b61000 /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
0x00007fff30fdf000 /System/Library/Frameworks/FileProvider.framework/Versions/A/FileProvider
0x00007fff26192000 /System/Library/Frameworks/Accounts.framework/Versions/A/Accounts
0x00007fff3112f000 /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
0x00007fff309ff000 /System/Library/PrivateFrameworks/SymptomDiagnosticReporter.framework/Versions/A/SymptomDiagnosticReporter
0x00007fff23c92000 /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
0x00007fff22c96000 /usr/lib/libsandbox.1.dylib
0x00007fff273ec000 /System/Library/PrivateFrameworks/UserManagement.framework/Versions/A/UserManagement
0x00007fff29cba000 /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag
0x00007fff3450e000 /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
0x00007fff2e1e8000 /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing
0x00007fff32a8d000 /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211
0x00007fff2a367000 /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/AuthKit
0x00007fff29ab8000 /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils
0x00007fff299e5000 /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
0x00007fff2e334000 /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
0x00007fff32af1000 /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi
0x00007fff2d8ab000 /System/Library/PrivateFrameworks/CorePhoneNumbers.framework/Versions/A/CorePhoneNumbers
0x00007fff30b06000 /System/Library/PrivateFrameworks/DiskManagement.framework/Versions/A/DiskManagement
0x00007fff30a1c000 /System/Library/PrivateFrameworks/AppleIDAuthSupport.framework/Versions/A/AppleIDAuthSupport
0x00007fff2d88b000 /System/Library/PrivateFrameworks/KeychainCircle.framework/Versions/A/KeychainCircle
0x00007fff30ad2000 /System/Library/PrivateFrameworks/MediaKit.framework/Versions/A/MediaKit
0x00007fff30a29000 /System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording
0x00007fff2b04c000 /usr/lib/libCoreStorage.dylib
0x00007fff32f2c000 /usr/lib/libcsfde.dylib
0x00007fff2e46f000 /System/Library/PrivateFrameworks/ProtectedCloudStorage.framework/Versions/A/ProtectedCloudStorage
0x00007fff32f24000 /System/Library/PrivateFrameworks/EFILogin.framework/Versions/A/EFILogin
0x00007fff3353e000 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
0x00007fff30999000 /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth
0x00007fff2b044000 /usr/lib/libMatch.1.dylib
0x00007fff43826000 /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera
0x00007fff2d836000 /System/Library/PrivateFrameworks/MobileAsset.framework/Versions/A/MobileAsset
0x00007fff33562000 /System/Library/PrivateFrameworks/StreamingZip.framework/Versions/A/StreamingZip
0x00007fff2bfd0000 /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox
0x00007fff30fb1000 /System/Library/PrivateFrameworks/CoreAVCHD.framework/Versions/A/CoreAVCHD
0x00007fff30198000 /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility
0x00007fff30fad000 /System/Library/PrivateFrameworks/Mangrove.framework/Versions/A/Mangrove
0x00007fff301a4000 /System/Library/PrivateFrameworks/AlgosScoreFramework.framework/Versions/A/AlgosScoreFramework
0x00007fff3199b000 /System/Library/PrivateFrameworks/AppleVPA.framework/Versions/A/AppleVPA
0x00007fff30bf2000 /System/Library/PrivateFrameworks/CoreAUC.framework/Versions/A/CoreAUC
0x00007fff41279000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/Libraries/libCGInterfaces.dylib
0x0000000116711000 /usr/lib/libobjc-trampolines.dylib
0x00007fff270eb000 /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge
0x00007fff2b7ea000 /System/Library/PrivateFrameworks/login.framework/Versions/A/login
0x0000000137e97000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libfontmanager.dylib
0x0000000137ef8000 /Users/yuyangwang/Desktop/Programs_In_BDIC/Stage 3 Semester 1/Computer Graphic/Assignment3/liblwjgl.dylib
0x000000011677e000 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/libjawt.dylib
0x00007fff6bd32000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLEngine.bundle/GLEngine
0x00007fff6bb93000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib
0x00007fff5ef16000 /System/Library/Extensions/AppleIntelKBLGraphicsGLDriver.bundle/Contents/MacOS/AppleIntelKBLGraphicsGLDriver
0x00007fff4636c000 /System/Library/PrivateFrameworks/GPUSupport.framework/Versions/A/Libraries/libGPUSupportMercury.dylib
0x00000001380a1000 /System/Library/Extensions/AMDRadeonX4000GLDriver.bundle/Contents/MacOS/AMDRadeonX4000GLDriver
0x00007fff6e073000 /System/Library/Extensions/AMDRadeonX4000GLDriver.bundle/Contents/MacOS/ATIRadeonX4000SCLib.dylib
0x00007fff5e17e000 /System/Library/Extensions/AMDShared.bundle/Contents/PlugIns/libSC.dylib
0x00007fff6beb0000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Resources/GLRendererFloat.bundle/GLRendererFloat
VM Arguments:
jvm_args: -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=62805:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8
java_command: MainWindow
java_class_path (initial): /Users/yuyangwang/Desktop/Programs_In_BDIC/Stage 3 Semester 1/Computer Graphic/Assignment3/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Co
Launcher Type: SUN_STANDARD
Environment Variables:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
PATH=/opt/MonkeyDev/bin:/Users/yuyangwang/opt/anaconda3/bin:/Users/yuyangwang/opt/anaconda3/condabin:/Users/yuyangwang/.autojump/bin:/Users/yuyangwang/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Library/TeX/texbin:/usr/local/share/dotnet:/opt/X11/bin:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Wireshark.app/Contents/MacOS:/Users/yuyangwang/flutter/bin
SHELL=/bin/zsh
Signal Handlers:
SIGSEGV: [libjvm.dylib+0x5a0dcb], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO
SIGBUS: [libjvm.dylib+0x5a0dcb], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGFPE: [libjvm.dylib+0x491731], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGPIPE: [libjvm.dylib+0x491731], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGXFSZ: [libjvm.dylib+0x491731], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGILL: [libjvm.dylib+0x491731], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
SIGUSR2: [libjvm.dylib+0x49202a], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
SIGHUP: [libjvm.dylib+0x490239], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGINT: [libjvm.dylib+0x490239], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGTERM: [libjvm.dylib+0x490239], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
SIGQUIT: [libjvm.dylib+0x490239], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO
--------------- S Y S T E M ---------------
OS:Bsduname:Darwin 20.6.0 Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:31 PDT 2021; root:xnu-7195.141.2~5/RELEASE_X86_64 x86_64
rlimit: STACK 8192k, CORE 0k, NPROC 2784, NOFILE 10240, AS infinity
load average:3.65 2.46 2.24
CPU:total 16 (initial active 16) (8 cores per cpu, 2 threads per core) family 6 model 158 stepping 13, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx
Memory: 4k page, physical 16777216k(428808k free)
/proc/meminfo:
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.271-b09) for bsd-amd64 JRE (1.8.0_271-b09), built on Sep 16 2020 16:54:38 by "java_re" with gcc 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5)
time: Wed Oct 13 17:18:11 2021
timezone: CST
elapsed time: 1.761082 seconds (0d 0h 0m 1s)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

@ -0,0 +1,91 @@
package GraphicsObjects;
import java.nio.FloatBuffer;
/*
* Created by Owen Grogan on 06/05/2010.
* Copyright 2010 School of Computer Science,UCD. All rights reserved.
*
* Update for Java by Abraham Campbell on 14/10/2015 for School of Computer Science,UCD.
*/
public class Arcball {
private quat currQuat;
private Vector4f v0;
public Arcball()
{
currQuat=new quat();
v0=new Vector4f();
}
/*
* Converts screen coordinates to a point on a unit sphere
* needs to be modified based on what click coordinate system is being used
*/
public Vector4f screenToPoint(int x, int y, int windowWidth, int windowHeight)
{
float retX,retY,s;
float radius = (float) min(windowWidth,windowHeight)/2.0f;
retX = (x-(windowWidth/2.0f))/radius;
retY = ((y-(windowHeight/2.0f))/radius);
float r = (retX*retX)+(retY*retY);
float srR=(float) Math.sqrt(r);
if(r>=1.0f){
s=1.0f/srR;
return new Vector4f(s*retX,s*retY,0.0f,0.0f);
}else{
return new Vector4f(retX, retY, (float)Math.sqrt(1.0f-r) ,0.0f);
}
}
public void startBall(int x, int y, int windowWidth, int windowHeight){
v0 = screenToPoint(x, y, windowWidth, windowHeight);
}
/*
* Uses ken shoemakes tecnique
*/
public void updateBall(int x, int y, int windowWidth, int windowHeight){
Vector4f v1 = screenToPoint(x, y, windowWidth, windowHeight);
Vector4f im = v0.cross(v1);
float re = v0.dot(v1);
quat newQuat = new quat(re,im);
currQuat = newQuat.mult(currQuat);
v0=v1;
// System.out.println(" v1" + currQuat.getImag().x+"," +currQuat.getImag().y+"," +currQuat.getImag().z);
}
/*
* Takes current modelview matrix as 16 item array
* and replaces the rotation part with the current rotation
*/
public void getMatrix(FloatBuffer currentMatrix){
currQuat.toMatrix(currentMatrix);
}
public int min(int i,int j){
if(i>j)
return j;
else
return i;
}
public void reset(){
currQuat= new quat();
}
}

@ -0,0 +1,142 @@
package GraphicsObjects;
public class Point4f {
public float x;
public float y;
public float z;
public float a;
// default constructor
// setting all the variables to 0 if no value passed in
public Point4f() {
x = 0.0f;
y = 0.0f;
z = 0.0f;
a = 0.0f;
}
//initializing constructor
//setting all the variables to the passed in value
public Point4f(float x, float y, float z, float a) {
this.x = x;
this.y = y;
this.z = z;
this.a = a;
}
// sometimes for different algorithms we will need to address the point using positions 0 1 2 3
//get the variable based on the positions
public float getPostion(int postion) {
switch (postion) {
case 0:
return x;
case 1:
return y;
case 2:
return z;
case 3:
return a;
default:
return Float.NaN;
}
}
//override toString method to change the display in console.
public String toString() {
return ("(" + x + "," + y + "," + z + "," + a + ")");
}
//implement Point plus a Vector
// Plus a Vector on a point mathematically is move the
// point along the vector's direction and the distance moved
// is the length of the vector.
public Point4f PlusVector(Vector4f Additonal) {
return new Point4f(
this.x + Additonal.x,
this.y + Additonal.y,
this.z + Additonal.z,
this.a + Additonal.a
);
}
//implement Point minus a Vector
// Similar to the plus vector method, but this time we move the
// point to the opposite direction of the vector.
public Point4f MinusVector(Vector4f Minus) {
return new Point4f(
this.x - Minus.x,
this.y - Minus.y,
this.z - Minus.z,
this.a - Minus.a
);
}
///implement Point - Point
// A point minus a point gives the vector between this two
// points (Pointing to the point that be minused)
public Vector4f MinusPoint(Point4f Minus) {
return new Vector4f(
this.x - Minus.x,
this.y - Minus.y,
this.z - Minus.z,
this.a - Minus.a
);
}
// Remember point + point is not defined so we not write a method for it.
}
/*................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
....................................=?7777+.....................................
.............................,8MMMMMMMMMMMMMMMMM7...............................
...........................$MMMMMMMMMMMMMMMMMMMMMM7.............................
........................IMMMMMMMMMMMMMMMMMMMMMMMMMMMM?..........................
......................?MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN........................
.....................MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM$......................
...................ZMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.....................
..................MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM8....................
.................NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM...................
................IMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM..................
................MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM$.................
...............=MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZ................
..............:MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM................
..............7MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM:...............
..............DMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZ...............
..............MMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMM8...............
..............MMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMN...............
..............NMMMMMMMMMMMMMMMMMMMM MM MMMMMMMMMMMMMMMMMMMMMMMMMO...............
..............$MMMMMMMMMMMMMMMMMM MMMM MMMMMMMMMMMMMMMMMMMMMMMMMI...............
..............+MMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMM=...............
...............8MMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMM................
................MMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMM8................
................MMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMN,................
................=MMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMM..................
.................MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMZ..................
..................MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMD...................
...................?MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM.....................
....................8MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM......................
.....................,8MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM,.......................
........................NMMMMMMMMMMMMMMMMMMMMMMMMMMMMN?.........................
..........................NMMMMMMMMMMMMMMMMMMMMMMMMMI...........................
.............................$MMMMMMMMMMMMMMMMMMM?..............................
.................................,I$NMMMMMN$?...................................
................................................................................
................................................................................
................................................................................
.......................................................................*/

@ -0,0 +1,21 @@
package GraphicsObjects;
import java.nio.FloatBuffer;
import org.lwjgl.BufferUtils;
public class Utils {
public static FloatBuffer ConvertForGL(float[] ToConvert)
{
FloatBuffer Any4 = BufferUtils.createFloatBuffer(4);
Any4.put(ToConvert[0]).put(ToConvert[1]).put(ToConvert[2]).put(ToConvert[3]).flip();
return Any4;
}
public static FloatBuffer initFloat() {
// TODO Auto-generated method stub
return null;
}
}

@ -0,0 +1,184 @@
package GraphicsObjects;
public class Vector4f {
public float x = 0;
public float y = 0;
public float z = 0;
public float a = 0;
// If we don't pass the coordinates this will be called
public Vector4f() {
x = 0.0f;
y = 0.0f;
z = 0.0f;
a = 0.0f;
}
//initializing constructor
public Vector4f(float x, float y, float z, float a) {
this.x = x;
this.y = y;
this.z = z;
this.a = a;
}
//implement Vector plus a Vector
// A vector plus a vector means make the origin vector change
// its direction or magnitude or both. In the direction of
// the additional vector.
// The new vector is pointing from the start of the original
// vector and ends at the end of the Additional vector.
public Vector4f PlusVector(Vector4f Additonal) {
return new Vector4f(
this.x + Additonal.x,
this.y + Additonal.y,
this.z + Additonal.z,
this.a + Additonal.a
);
}
//implement Vector minus a Vector
//This is similar to the plus vector method, the only different is
//the direction. At this time,this direction is the opposite of the
//passed in vector.
public Vector4f MinusVector(Vector4f Minus) {
return new Vector4f(
this.x - Minus.x,
this.y - Minus.y,
this.z - Minus.z,
this.a - Minus.a
);
}
//implement Vector plus a Point
//This method gives us a new point that moves the original point in
//the direction of the Additional vector. And the magnitude is the
//length of the additional vector.
public Point4f PlusPoint(Point4f Additonal) {
return new Point4f(
this.x + Additonal.x,
this.y + Additonal.y,
this.z + Additonal.z,
this.a + Additonal.a
);
}
//Do not implement Vector minus a Point as it is undefined
//Implement a Vector * Scalar
// This method only change the magnitude of the vector, scale it by a
// Scalar. It is actually multiply the magnitude by n .
public Vector4f byScalar(float scale) {
return new Vector4f(
this.x * scale,
this.y * scale,
this.z * scale,
this.a * scale
);
}
//implement returning the negative of a Vector
//This method will give us a new vector that is pointing the
//opposite direction of the current and not changing its magnitude.
public Vector4f NegateVector() {
return new Vector4f(
-this.x,
-this.y,
-this.z,
-this.a
);
}
//implement getting the length of a Vector
//This method gives the magnitude of the current vector
//by using the length formula
public float length() {
return (float) Math.sqrt(x * x + y * y + z * z + a * a);
}
//implement getting the Normal of a Vector
// Remember that since you just have one vector, this method is returning a normalized vector with a one unity length
// This method returns the normalized vector of the current vector
// which has unit magnitude of 1.
// I use the 1.0f / length() as the norm, which is like a scale that can change the x,y,z by this scale
public Vector4f Normal() {
float l = this.length();
return new Vector4f(
this.x / l,
this.y / l,
this.z / l,
this.a / l
);
}
//implement getting the dot product of Vector.Vector
//This method gives the dot product of two vector.
//the result is a number(scalar)
//It is actually projecting Vector A to Vector B and multiply it by the
//magnitude of B
public float dot(Vector4f v) {
return (this.x * v.x + this.y * v.y + this.z * v.z + this.a * v.a);
}
// Implemented this for you to avoid confusion
// as we will not normally be using 4 float vector
//The cross product gives us a vector.
//The vector is actually perpendicular to the Vector A and vector B
//Here A is "this" vector and B is "v"
public Vector4f cross(Vector4f v) {
float u0 = (this.y * v.z - z * v.y);
float u1 = (z * v.x - x * v.z);
float u2 = (x * v.y - y * v.x);
float u3 = 0; //ignoring this for now
return new Vector4f(u0, u1, u2, u3);
}
}
/*
MMMM
MMMMMM
MM MMMM
MMI MMMM
MMM MMMM
MMM MMMM
MM MMMMM
MMM MMMMM
MMM OMMMM
MM .MMMM
MMMMMMMMMMMMMMM MMM .MMMM
MM IMMMMMMMMMMMMMMMMMMMMMMMM MMM MMMM
MM ~MMMMMMMMMMMMMMMMMMMMM MMMM
MM OMMMMM MMMMM
MM MMMMM
MM MMMMM
MM ~MMMM
MM =MMMM
MM MMMM
MM 4 D MMMMMM
MM MMMMMMMM
MM :MMMMMMMM
MM MMMMMMMMM
MM MMMMMMMMM
MM ,MMMMMMMMMM MMMMMMMMM
MM IMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ZMMMMMMMM
MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MM$ MMMMMMMMM
MMMMMMMMMMMMMM MMM MMMMMMMMM
MMM MMMMMMMM
MM~ IMMMMMMMM
MM DMMMMMMMM
MMM MMMMMMMMM
MMD MMMMMMMM
MMM MMMMMMMM
MMMMMMMMMM
MMMMMMMM
MMMM
MM
GlassGiant.com */

@ -0,0 +1,162 @@
package GraphicsObjects;
import java.nio.FloatBuffer;
import org.lwjgl.BufferUtils;
/*
* Created by Owen Grogan on 06/05/2010.
* Copyright 2010 School of Computer Science and Informatics. All rights reserved.
*
* Update for Java by Abraham Campbell on 14/10/2015
Updated again by Abraham Campbell on 14/10/2019 with Huang Yuyang fix to stop Arc Ball issues ( well spotted )
*/
public class quat {
private float real =1f;
private Vector4f imag = new Vector4f( 0.0f,0.0f,0.0f,0.0f);
public quat()
{
}
public quat(float[] matrix)
{
real = (float) (Math.sqrt( 1.0+matrix[0]+matrix[5]+matrix[10]) /2.0);
float w4 = (float) (4.0*real);
imag= new Vector4f((matrix[6] - matrix[9])/w4,
(matrix[8] - matrix[2])/w4,
(matrix[1] - matrix[4])/w4,0.0f);
}
public quat(float w,float x, float y, float z)
{
imag.x = x;
imag.y = y;
imag.z = z;
real = w;
}
public quat(Vector4f v, float w)
{
imag = v;
real = w;
}
public quat(float w, Vector4f v){
imag = v;
real = w;
}
public float getReal()
{
return real;
}
public Vector4f getImag()
{
return imag;
}
public quat mult(quat q)
{
float T = (real*q.getReal()) - (imag.dot(q.getImag()));
//System.out.println("T =" + T);
Vector4f P = q.getImag().byScalar(real);
Vector4f Q = imag.byScalar(q.getReal());
Vector4f W = imag.cross(q.getImag());
Vector4f Combine = P.PlusVector(Q);
Combine = Combine.PlusVector(W);
return new quat(T,Combine);
}
public quat conj()
{
return new quat(real,-imag.x,-imag.y,-imag.z);
}
float sumSquare(){
return (real*real+imag.x*imag.x+
imag.y*imag.y+imag.z*imag.z);
}
public quat inverse(){
float T= real/sumSquare();
Vector4f W = conj().getImag().byScalar(1/sumSquare());
return new quat(T,W);
}
void toMatrix(FloatBuffer currentMatrix){
float treal = real;
float[] ToConvert = new float[16];
//identity matrix
ToConvert[0] = 1.0f;
ToConvert[1] = 0.0f;
ToConvert[2] = 0.0f;
ToConvert[3] = 0.0f;
ToConvert[4] = 0.0f;
ToConvert[5] = 1.0f;
ToConvert[6] = 0.0f;
ToConvert[7] = 0.0f;
ToConvert[8] = 0.0f;
ToConvert[9] = 0.0f;
ToConvert[10] = 1.0f;;
ToConvert[11] = 0.0f;
ToConvert[12] = 0.0f;
ToConvert[13] = 0.0f;
ToConvert[14] = 0.0f;
ToConvert[15] = 1.0f;;
// currentMatrix.
//System.out.println("TEst = "+ (1.0f-((2.0f*imag.y*imag.y)+(2.0f*imag.z*imag.z))));
ToConvert[0] = 1.0f-((2.0f*imag.y*imag.y)+(2.0f*imag.z*imag.z));
ToConvert[4] = 2.0f*((imag.x*imag.y)-(imag.z*treal));
ToConvert[8] = 2.0f*((imag.x*imag.z)+(imag.y*treal));
ToConvert[1] = 2.0f*((imag.x*imag.y)+(imag.z*treal));
ToConvert[5] = 1.0f-((2.0f*imag.x*imag.x)+(2.0f*imag.z*imag.z));
ToConvert[9] = 2.0f*((imag.y*imag.z)-(imag.x*treal));
ToConvert[2] = 2.0f*((imag.x*imag.z)-(imag.y*treal));
ToConvert[6] = 2.0f*((imag.y*imag.z)+(imag.x*treal));
ToConvert[10] = 1.0f-((2.0f*imag.y*imag.y)+(2.0f*imag.x*imag.x));
/*
System.out.println("Matrix " + ToConvert[0] +" "+ ToConvert[4] +" "+ ToConvert[8] +" "+ ToConvert[12] + "\n"
+" " + ToConvert[1] +" "+ ToConvert[5] +" "+ ToConvert[9] +" "+ ToConvert[13] + "\n"
+" " + ToConvert[2] +" "+ ToConvert[6] +" "+ ToConvert[10] +" "+ ToConvert[14] + "\n"
+" " + ToConvert[3] +" "+ ToConvert[7] +" "+ ToConvert[11] +" "+ ToConvert[15] + "\n");
*/
currentMatrix.put(
ToConvert[0]).put
(ToConvert[1]).put
(ToConvert[2]).put
(ToConvert[3]).put
(ToConvert[4]).put
(ToConvert[5]).put
(ToConvert[6]).put
(ToConvert[7]).put
(ToConvert[8]).put
(ToConvert[9]).put
(ToConvert[10]).put
(ToConvert[11]).put
(ToConvert[12]).put
(ToConvert[13]).put
(ToConvert[14]).put
(ToConvert[15]).flip();
}
}

@ -0,0 +1,3 @@
Manifest-Version: 1.0
Main-Class: MainWindow

@ -0,0 +1,740 @@
import GraphicsObjects.Arcball;
import GraphicsObjects.Utils;
import GraphicsObjects.Vector4f;
import objects3D.Grid;
import objects3D.Human;
import objects3D.TexCube;
import org.lwjgl.BufferUtils;
import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.glu.GLU;
import org.newdawn.slick.Color;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;
import java.io.IOException;
import java.nio.FloatBuffer;
import java.util.HashMap;
import java.util.LinkedHashMap;
//Main windows class controls and creates the 3D virtual world , please do not change this class but edit the other classes to complete the assignment.
// Main window is built upon the standard Helloworld LWJGL class which I have heavily modified to use as your standard openGL environment.
//
// Do not touch this class, I will be making a version of it for your 3rd Assignment
public class MainWindow {
//MY Hash map to store the textures
public static HashMap<String, Texture> textures = new LinkedHashMap();
// basic colours
static float black[] = {0.0f, 0.0f, 0.0f, 1.0f};
static float white[] = {1.0f, 1.0f, 1.0f, 1.0f};
static float grey[] = {0.5f, 0.5f, 0.5f, 1.0f};
static float spot[] = {0.1f, 0.1f, 0.1f, 0.5f};
// primary colours
static float red[] = {1.0f, 0.0f, 0.0f, 1.0f};
static float green[] = {0.0f, 1.0f, 0.0f, 1.0f};
static float blue[] = {0.0f, 0.0f, 1.0f, 1.0f};
// secondary colours
static float yellow[] = {1.0f, 1.0f, 0.0f, 1.0f};
static float magenta[] = {1.0f, 0.0f, 1.0f, 1.0f};
static float cyan[] = {0.0f, 1.0f, 1.0f, 1.0f};
// other colours
static float orange[] = {1.0f, 0.5f, 0.0f, 1.0f, 1.0f};
static float brown[] = {0.5f, 0.25f, 0.0f, 1.0f, 1.0f};
static float dkgreen[] = {0.0f, 0.5f, 0.0f, 1.0f, 1.0f};
static float pink[] = {1.0f, 0.6f, 0.6f, 1.0f, 1.0f};
/**
* position of pointer
*/
float x = 400, y = 300;
/**
* angle of rotation
*/
float rotation = 0;
/**
* time at last frame
*/
long lastFrame;
/**
* frames per second
*/
int fps;
/**
* last fps time
*/
long lastFPS;
long myDelta = 0; //to use for animation
float Alpha = 0; //to use for animation
long StartTime; // beginAnimiation
Arcball MyArcball = new Arcball();
boolean DRAWGRID = false;
boolean waitForKeyrelease = true;
/**
* Mouse movement
*/
int LastMouseX = -1;
int LastMouseY = -1;
float pullX = 0.0f; // arc ball X cord.
float pullY = 0.0f; // arc ball Y cord.
int OrthoNumber = 1200; // using this for screen size, making a window of 1200 x 800 so aspect ratio 3:2 // do not change this for assignment 3 but you can change everything for your project
Texture texture;
private boolean MouseOnepressed = true;
private boolean dragMode = false;
// static GLfloat light_position[] = {0.0, 100.0, 100.0, 0.0};
private boolean BadAnimation = false;
//support method to aid in converting a java float array into a Floatbuffer which is faster for the opengl layer to process
private boolean Earth = false;
//mouse right button click record
private int secMouseX = 700;
private int secMouseY = 0;
//if mouse right button click
private Boolean secMousePressed = false;
public static void main(String[] argv) {
MainWindow hello = new MainWindow();
hello.start();
}
public void start() {
StartTime = getTime();
try {
Display.setDisplayMode(new DisplayMode(1200, 800));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
initGL(); // init OpenGL
getDelta(); // call once before loop to initialise lastFrame
lastFPS = getTime(); // call before loop to initialise fps timer
// 489 477
// 558 585
// MyArcball.startBall(489 ,477,1200,800);
// MyArcball.updateBall(558 ,585,1200,800);
//move camera away
OrthoNumber = 1440;
while (!Display.isCloseRequested()) {
int delta = getDelta();
update(delta);
renderGL();
Display.update();
Display.sync(120); // cap fps to 120fps
}
Display.destroy();
}
public void update(int delta) {
// rotate quad
//rotation += 0.01f * delta;
//My translation function needs to log Mouse position
int MouseX = Mouse.getX();
int MouseY = Mouse.getY();
int WheelPostion = Mouse.getDWheel();
//If first button pressed then use the arcball, if second button then translate the scene
boolean MouseButonPressed = Mouse.isButtonDown(0);
this.secMousePressed = Mouse.isButtonDown(1);
//for scene translation
if (this.secMousePressed) {
int x = (int) (MouseX - this.LastMouseX);
int y = (int) (MouseY - this.LastMouseY);
this.secMouseX += x;
this.secMouseY += y;
}
//scene rotation
if (MouseButonPressed && !MouseOnepressed) {
MouseOnepressed = true;
// System.out.println("Mouse drag mode");
MyArcball.startBall(MouseX, MouseY, 1200, 800);
// System.out.println(MouseX + " " + MouseY);
System.out.println(OrthoNumber);
dragMode = true;
} else if (!MouseButonPressed) {
// if(MouseX != LastMouseX)
// System.out.println(MouseX + " " + MouseY);
MouseOnepressed = false;
dragMode = false;
}
if (dragMode) {
//update arcball
MyArcball.updateBall(MouseX, MouseY, 1200, 800);
}
if (WheelPostion > 0) {
OrthoNumber += 10;
}
if (WheelPostion < 0) {
OrthoNumber -= 10;
if (OrthoNumber < 610) {
OrthoNumber = 610;
}
// System.out.println("Orth nubmer = " + OrthoNumber);
}
/** rest key is R*/
if (Keyboard.isKeyDown(Keyboard.KEY_R))
MyArcball.reset();
/* bad animation can be turn on or off using A key)*/
if (Keyboard.isKeyDown(Keyboard.KEY_A))
BadAnimation = !BadAnimation;
if (Keyboard.isKeyDown(Keyboard.KEY_D))
x += 0.35f * delta;
if (Keyboard.isKeyDown(Keyboard.KEY_W))
y += 0.35f * delta;
if (Keyboard.isKeyDown(Keyboard.KEY_S))
y -= 0.35f * delta;
if (Keyboard.isKeyDown(Keyboard.KEY_Q))
rotation += 0.35f * delta;
if (Keyboard.isKeyDown(Keyboard.KEY_E)) {
Earth = !Earth;
}
if (waitForKeyrelease) // check done to see if key is released
{
if (Keyboard.isKeyDown(Keyboard.KEY_G)) {
DRAWGRID = !DRAWGRID;
Keyboard.next();
if (Keyboard.isKeyDown(Keyboard.KEY_G)) {
waitForKeyrelease = true;
} else {
waitForKeyrelease = false;
}
}
}
/** to check if key is released */
if (Keyboard.isKeyDown(Keyboard.KEY_G) == false) {
waitForKeyrelease = true;
} else {
waitForKeyrelease = false;
}
// keep quad on the screen
if (x < 0)
x = 0;
if (x > 1200)
x = 1200;
if (y < 0)
y = 0;
if (y > 800)
y = 800;
updateFPS(); // update FPS Counter
LastMouseX = MouseX;
LastMouseY = MouseY;
}
/**
* Calculate how many milliseconds have passed since last frame.
*
* @return milliseconds passed since last frame
*/
public int getDelta() {
long time = getTime();
int delta = (int) (time - lastFrame);
lastFrame = time;
return delta;
}
/**
* Get the accurate system time
*
* @return The system time in milliseconds
*/
public long getTime() {
return (Sys.getTime() * 1000) / Sys.getTimerResolution();
}
/**
* Calculate the FPS and set it in the title bar
*/
public void updateFPS() {
if (getTime() - lastFPS > 1000) {
Display.setTitle("FPS: " + fps);
fps = 0;
lastFPS += 1000;
}
fps++;
}
public void initGL() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
changeOrth();
MyArcball.startBall(0, 0, 1200, 800);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
FloatBuffer lightPos = BufferUtils.createFloatBuffer(4);
lightPos.put(10000f).put(1000f).put(1000).put(0).flip();
FloatBuffer lightPos2 = BufferUtils.createFloatBuffer(4);
lightPos2.put(0f).put(1000f).put(0).put(-1000f).flip();
FloatBuffer lightPos3 = BufferUtils.createFloatBuffer(4);
lightPos3.put(-10000f).put(1000f).put(1000).put(0).flip();
FloatBuffer lightPos4 = BufferUtils.createFloatBuffer(4);
lightPos4.put(1000f).put(1000f).put(1000f).put(0).flip();
GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, lightPos); // specify the
// position
// of the
// light
// GL11.glEnable(GL11.GL_LIGHT0); // switch light #0 on // I've setup specific materials so in real light it will look abit strange
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_POSITION, lightPos); // specify the
// position
// of the
// light
GL11.glEnable(GL11.GL_LIGHT1); // switch light #0 on
GL11.glLight(GL11.GL_LIGHT1, GL11.GL_DIFFUSE, Utils.ConvertForGL(spot));
GL11.glLight(GL11.GL_LIGHT2, GL11.GL_POSITION, lightPos3); // specify
// the
// position
// of the
// light
GL11.glEnable(GL11.GL_LIGHT2); // switch light #0 on
GL11.glLight(GL11.GL_LIGHT2, GL11.GL_DIFFUSE, Utils.ConvertForGL(grey));
GL11.glLight(GL11.GL_LIGHT3, GL11.GL_POSITION, lightPos4); // specify
// the
// position
// of the
// light
GL11.glEnable(GL11.GL_LIGHT3); // switch light #0 on
GL11.glLight(GL11.GL_LIGHT3, GL11.GL_DIFFUSE, Utils.ConvertForGL(grey));
GL11.glEnable(GL11.GL_LIGHTING); // switch lighting on
GL11.glEnable(GL11.GL_DEPTH_TEST); // make sure depth buffer is switched
// on
GL11.glEnable(GL11.GL_NORMALIZE); // normalize normal vectors for safety
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
try {
init();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //load in texture
}
public void changeOrth() {
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(1200 - OrthoNumber, OrthoNumber, (800 - (OrthoNumber * 0.66f)), (OrthoNumber * 0.66f), 100000, -100000);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
FloatBuffer CurrentMatrix = BufferUtils.createFloatBuffer(16);
GL11.glGetFloat(GL11.GL_MODELVIEW_MATRIX, CurrentMatrix);
// if(MouseOnepressed)
// {
MyArcball.getMatrix(CurrentMatrix);
// }
GL11.glLoadMatrix(CurrentMatrix);
}
/*
* You can edit this method to add in your own objects / remember to load in textures in the INIT method as they take time to load
*
*/
public void renderGL() {
changeOrth();
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
GL11.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
GL11.glColor3f(0.5f, 0.5f, 1.0f);
myDelta = getTime() - StartTime;
float delta = ((float) myDelta) / 10000;
// code to aid in animation
float theta = (float) (delta * 2 * Math.PI);
float thetaDeg = delta * 360;
float posn_x = (float) Math.cos(theta); // same as your circle code in your notes
float posn_y = (float) Math.sin(theta);
// System.out.println(posn_x);
OrthoNumber = (int) (1240 + posn_x * 200); //letting the OrthoNumber change when the scene change
// GL11.glLoadIdentity();
// System.out.println(-posn_x * 5.0f);
// GLU.gluLookAt(0f, -1f, 0f, 0f, 0f, 0f, 1f, 0f, 0f);
if (!BadAnimation) {
// secMouseX = 600;
// secMouseY = 100;
Vector4f v = new Vector4f(-posn_x, -0.5f, -posn_y, 0f);
GL11.glTranslatef(secMouseX, secMouseY, 0);
Vector4f v1 = new Vector4f(posn_x, 0f, posn_y,0f);
Vector4f v2 = new Vector4f(0f, 1f, 0f,0f);
Vector4f v3 = v1.cross(v2);
v3 = new Vector4f(v3.x, v3.y + 0.3f, v3.z, 0f).Normal();
// GLU.gluLookAt(v.Normal().x, v.Normal().y, v.Normal().z, 0f, 0f, 0f, 0f, 1f, 0f);
GLU.gluLookAt(-v3.x, -v3.y, -v3.z, 0f, 0f, 0f, 0f, 1f, 0f); //change the look at position
} else {
// secMouseX = 600;
// secMouseY = 0;
GL11.glTranslatef(secMouseX, secMouseY, 0);
GLU.gluLookAt(2f, -1f, -1f, 0f, 0f, 0f, 0f, 1f, 0f);
}
// GL11.glPushMatrix();
// TexCube MyGrid1 = new TexCube();
//// GL11.glTranslatef(secMouseX,secMouseY,0);
//// GL11.glTranslatef(600, 270, 0);
// GL11.glScalef(200f, 200f, 200f);
// GL11.glTexParameteri(
// GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
// GL11.GL_REPEAT);
// GL11.glTexParameteri(
// GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S,
// GL11.GL_REPEAT);
// Color.white.bind();
// textures.get("default_dirt").bind();
// GL11.glEnable(GL11.GL_TEXTURE_2D);
// GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
// MyGrid1.DrawTexCube(30f);
// GL11.glDisable(GL11.GL_TEXTURE_2D);
// GL11.glPopMatrix();
/*
* This code draws a grid to help you view the human models movement
* You may change this code to move the grid around and change its starting angle as you please
*/
if (DRAWGRID) {
GL11.glPushMatrix();
Grid MyGrid = new Grid();
// GL11.glTranslatef(secMouseX,secMouseY,0);
GL11.glTranslatef(600, 300, 0);
GL11.glScalef(200f, 200f, 200f);
MyGrid.DrawGrid();
GL11.glPopMatrix();
}
//Draw a big plain
GL11.glPushMatrix();
TexCube MyGrid = new TexCube();
// GL11.glTranslatef(secMouseX,secMouseY,0);
GL11.glTranslatef(600, 270, 0);
GL11.glScalef(8000f, 1f, 8000f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S,
GL11.GL_REPEAT);
Color.white.bind();
//bind texture
textures.get("default_dirt").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
MyGrid.DrawTexCube(30f);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glPopMatrix();
GL11.glPushMatrix();
//human obj
Human MyHuman = new Human(textures); //init human with textures
// GL11.glTranslatef(secMouseX,secMouseY,0);
GL11.glTranslatef(300, 400, 0);
GL11.glScalef(90f, 90f, 90f);
if (!BadAnimation) {
// insert your animation code to correct the postion for the human rotating
GL11.glTranslatef(posn_x * 3.0f, 0.0f, posn_y * 3.0f);
float angle = -(float) (180 * (theta) / Math.PI);
GL11.glRotatef(180 + angle, 0, 1, 0);
// System.out.println(theta);
} else {
//bad animation version
// GL11.glTranslatef(posn_x * 3.0f, 0.0f, posn_y * 3.0f);
GL11.glTranslatef(posn_x * 3.0f, 0.0f, posn_y * 3.0f);
float angle = -(float) (180 * (theta) / Math.PI);
GL11.glRotatef(180 + angle, 0, 1, 0);
}
MyHuman.DrawHuman(delta, true); // give a delta for the Human object ot be animated
GL11.glPopMatrix();
// Draw TNTs
GL11.glPushMatrix();
TexCube cube1 = new TexCube();
// GL11.glTranslatef(secMouseX,secMouseY,0);
GL11.glTranslatef(300, 320, 0);
GL11.glScalef(50f, 50f, 50f);
Color.white.bind();
textures.get("tnt_side").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
cube1.DrawTexCube();
//TNT
GL11.glPushMatrix();
{
//go up
GL11.glTranslatef(0, 2f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0, 2f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0, 2f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0, 2f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
//right(top TNTs)
GL11.glTranslatef(2f, 0f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(2f, 0f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(2f, 0f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(2f, 0f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
//go down
GL11.glTranslatef(0f, -2f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0f, -2f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0f, -2f, 0);
cube1.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0f, -2f, 0);
cube1.DrawTexCube();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
GL11.glPopMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glPopMatrix();
//Draw lava
GL11.glPushMatrix();
TexCube cube2 = new TexCube();
// GL11.glTranslatef(secMouseX,secMouseY,0);
GL11.glTranslatef(300, 320, 0);
// GL11.glTranslatef(0, -2f, 0);
GL11.glScalef(50f, 50f, 50f);
Color.white.bind();
textures.get("default_lava").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glTranslatef(-2f, 0f, 0);
cube2.DrawTexCube();
//LAVA
GL11.glPushMatrix();
{
//Go UP
GL11.glTranslatef(0f, 2f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0f, 2f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0f, 2f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0f, 2f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
//go left (TOP lava)
GL11.glTranslatef(-2f, 0f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(-2f, 0f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(-2f, 0f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
//Go DOWN
GL11.glTranslatef(0f, -2f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0f, -2f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0f, -2f, 0);
cube2.DrawTexCube();
GL11.glPushMatrix();
{
GL11.glTranslatef(0f, -2f, 0);
cube2.DrawTexCube();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glPopMatrix();
/*
* This code puts the earth code in which is larger than the human so it appears to change the scene
*/
if (Earth) {
//Globe in the centre of the scene
GL11.glPushMatrix();
// TexSphere MyGlobe = new TexSphere();
TexCube MyGlobe = new TexCube();
GL11.glTranslatef(500, 500, 500);
GL11.glScalef(140f, 140f, 140f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_CLAMP);
Color.white.bind();
texture.bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// MyGlobe.DrawTexSphere(8f, 100, 100, texture);
MyGlobe.DrawTexCube();
GL11.glPopMatrix();
}
}
/*
* Any additional textures for your assignment should be written in here.
* Make a new texture variable for each one so they can be loaded in at the beginning
*/
public void init() throws IOException {
//LOAD textures
texture = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/earthspace.png"));
textures.put("awesomeface", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/awesomeface.png")));
textures.put("default_dirt", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/default_dirt.png")));
textures.put("earthspace", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/earthspace.png")));
textures.put("tnt_side", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/tnt_side.png")));
textures.put("farming_wheat_8", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/farming_wheat_8.png")));
textures.put("wool_pink", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/wool_pink.png")));
textures.put("default_lava", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/default_lava.png")));
textures.put("default_stone", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/default_stone.png")));
textures.put("default_cobble", TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/default_cobble.png")));
// textures.put("awesomeface",TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/awesomeface.png")));
// textures.put("awesomeface",TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("res/awesomeface.png")));
System.out.println("Texture loaded okay ");
}
}

@ -0,0 +1,78 @@
package objects3D;
import GraphicsObjects.Point4f;
import GraphicsObjects.Vector4f;
import org.lwjgl.opengl.GL11;
public class Cube {
public Cube() {
}
// Implement using notes and examine Tetrahedron to aid in the coding look at lecture 7 , 7b and 8
// Implement using notes and examine Tetrahedron to aid in the coding look at lecture 7 , 7b and 8
//This method will draw a cube, base on the vertices and the faces
public void DrawCube() {
//a cube have 8 vertices so this is the coordinates of the vertices
Point4f vertices[] = {new Point4f(-1.0f, -1.0f, -1.0f, 0.0f),
new Point4f(-1.0f, -1.0f, 1.0f, 0.0f),
new Point4f(-1.0f, 1.0f, -1.0f, 0.0f),
new Point4f(-1.0f, 1.0f, 1.0f, 0.0f),
new Point4f(1.0f, -1.0f, -1.0f, 0.0f),
new Point4f(1.0f, -1.0f, 1.0f, 0.0f),
new Point4f(1.0f, 1.0f, -1.0f, 0.0f),
new Point4f(1.0f, 1.0f, 1.0f, 0.0f)};
//each face of the cube consists four edges, there are 6 faces in total
//so, this array has 6 element, each element contains the related edges
int faces[][] = {{0, 4, 5, 1},
{0, 2, 6, 4},
{0, 1, 3, 2},
{4, 6, 7, 5},
{1, 5, 7, 3},
{2, 3, 7, 6}};
//INIT GL
GL11.glBegin(GL11.GL_QUADS);
for (int face = 0; face < 6; face++) { // per face
//calculate the normal vector using cross product which returns a vector
//that is perpendicular to these two vector
Vector4f v = vertices[faces[face][1]].MinusPoint(vertices[faces[face][0]]);
Vector4f w = vertices[faces[face][3]].MinusPoint(vertices[faces[face][0]]);
//calc the normal vector
Vector4f normal = v.cross(w).Normal();
//set the normal vector of this face in GL
GL11.glNormal3f(normal.x, normal.y, normal.z);
//draw one face
//point 1
GL11.glVertex3f(vertices[faces[face][0]].x, vertices[faces[face][0]].y, vertices[faces[face][0]].z);
//point 2
GL11.glVertex3f(vertices[faces[face][1]].x, vertices[faces[face][1]].y, vertices[faces[face][1]].z);
//point 3
GL11.glVertex3f(vertices[faces[face][2]].x, vertices[faces[face][2]].y, vertices[faces[face][2]].z);
//point 4
GL11.glVertex3f(vertices[faces[face][3]].x, vertices[faces[face][3]].y, vertices[faces[face][3]].z);
} // per face
//END GL
GL11.glEnd();
}
}
/*
}
*/

@ -0,0 +1,74 @@
package objects3D;
import GraphicsObjects.Vector4f;
import org.lwjgl.opengl.GL11;
public class Cylinder {
public Cylinder() {
}
// remember to use Math.PI isntead PI
// Implement using notes and examine Tetrahedron to aid in the coding look at lecture 7 , 7b and 8
// This method draws a Cylinder
public void DrawCylinder(float radius, float height, int nSegments) {
//INIT GL
GL11.glBegin(GL11.GL_TRIANGLES);
//Cylinder is drawn piece by piece, and each piece consist two triangle
//so, here we loop through the nSegments, to draw each piece.
for (float i = 0.0f; i < nSegments; i += 1.0) {
//left side angle of the piece
float angle = (float) (Math.PI * i * 2.0 / nSegments);
//right side angle of the piece
float nextAngle = (float) (Math.PI * (i + 1.0) * 2.0 / nSegments);
//left side angle of the piece
float x1 = (float) Math.sin(angle) * radius;
float y1 = (float) Math.cos(angle) * radius;
//right side angle of the piece
float x2 = (float) Math.sin(nextAngle) * radius;
float y2 = (float) Math.cos(nextAngle) * radius;
//upper triangle
GL11.glNormal3f(x1, y1, 0);
GL11.glVertex3f(x1, y1, 0);
GL11.glNormal3f(x2, y2, 0);
GL11.glVertex3f(x2, y2, height);
GL11.glNormal3f(x1, y1, 0);
GL11.glVertex3f(x1, y1, height);
//lower triangle
GL11.glNormal3f(x1, y1, 0);
GL11.glVertex3f(x1, y1, 0);
GL11.glNormal3f(x2, y2, 0);
GL11.glVertex3f(x2, y2, 0.0f);
GL11.glNormal3f(x2, y2, 0);
GL11.glVertex3f(x2, y2, height);
// //top & bottom
Vector4f normalTop = (new Vector4f(x1, y1, 0, 0)).cross(new Vector4f(x2 - x1, y2 - y1, 0, 0));
Vector4f normalBottom = (new Vector4f(x1, y1, 0, 0)).cross(new Vector4f(x2 - x1, y2 - y1, 0, 0));
//the top normal vector
GL11.glNormal3f(-normalTop.x, -normalTop.y, -normalTop.z);
GL11.glVertex3f(x1, y1, height);
GL11.glVertex3f(x2, y2, height);
GL11.glVertex3f(0, 0, height);
//the bottom normal vector
GL11.glNormal3f(normalBottom.x, normalBottom.y, normalBottom.z);
GL11.glVertex3f(x1, y1, 0);
GL11.glVertex3f(x2, y2, 0);
GL11.glVertex3f(0, 0, 0);
}
//END GL
GL11.glEnd();
}
}

@ -0,0 +1,141 @@
package objects3D;
import org.lwjgl.opengl.GL11;
import GraphicsObjects.Point4f;
import GraphicsObjects.Utils;
import GraphicsObjects.Vector4f;
public class Grid {
static float black[] = { 0.0f, 0.0f, 0.0f, 1.0f };
static float white[] = { 1.0f, 1.0f, 1.0f, 1.0f };
public Grid() {
}
// Do not touch this class, I have implmented to help you in your Assignment 3 and project
public void DrawGrid()
{
int nGridlines = 50;
int x, z;
// edges don't reflect
GL11.glMaterial(GL11.GL_FRONT_AND_BACK, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(black));
GL11.glMaterial(GL11.GL_FRONT_AND_BACK, GL11.GL_EMISSION, Utils.ConvertForGL(black)); // but they do emit
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPushMatrix();
for (x = -nGridlines; x <= nGridlines; x++){ // for each x
if ((x % 50 >0)) GL11.glLineWidth((float) 0.1);
else GL11.glLineWidth((float) 0.1);
GL11.glBegin( GL11.GL_LINES);
GL11.glVertex3i(x, 0, -nGridlines);
GL11.glVertex3i(x, 0, +nGridlines);
GL11.glEnd();
} // for each x
for (z = -nGridlines; z <= nGridlines; z++){ // for each y
if ((z % 50 >0)) GL11.glLineWidth((float) 0.1);
else GL11.glLineWidth((float) 0.1);
GL11.glBegin(GL11.GL_LINES);
GL11.glVertex3i(-nGridlines, 0, z);
GL11.glVertex3i(+nGridlines, 0, z);
GL11.glEnd();
} // for each y
GL11.glLineWidth((float) 1.0);
GL11.glPopMatrix();
// stop emitting, otherwise other objects will emit the same colour
GL11.glMaterial(GL11.GL_FRONT_AND_BACK, GL11.GL_EMISSION, Utils.ConvertForGL(black)); // but they do emit
}
}
/*
On the grid
= $ ~ D I D ~ $ = .
~ = + N ? M I M I M I N ? D + = ~ .
$ D 8 Z M 7 D O O N I N Z O D 7 M $ 8 8 $ .
: 7 ~ Z + N 8 I 8 N ? Z = $ : .
, ~ . D Z I O D . ~ , .
N M M , : $ 7 I $ Z , . M M D .
. N D ? I I I ? D D , . .
~ . = I + : . : + I + : . : + I + . : .
Z N N Z + ~ I ~ + Z N N Z .
N I . + 8 8 , I , 8 D ? . I N .
N + : O 8 + D I N + O O : + N .
$ 7 7 I 7 $ $ .
~ Z + : . I . : + Z ~ .
$ ? O M . = I = . N O ? Z .
7 I I 7 7 I 7 7 I I 7 .
......?.....I............~............M............8............7............O............M............~............I.....I...... .
D $ N 7 M I M $ N Z D .
Z ? = , 8 I 8 , ~ ? Z . .
: = ~ 8 D 7 I $ D 8 ~ = : .
I Z = : I + = , I , = + I : = Z I .
M D Z . ~ I ~ , Z D M .
D + I M + I + M I + D .
: D = + Z I I I Z = = D , .
: : M . D 8 = $ I 7 = 8 D . M , : .
Z D . $ $ 8 O I Z 8 $ $ . D Z .
$ O = , 8 I 8 , = . O $ .
= D $ + N I N + . $ D ~ .
D O ~ , $ M I M 7 , = O 8 .
~ : 7 D D I D D 7 : : .
+++++++O++++++D++++++M++++++I++++++$++++++8++++++N++++++M++++++8++++++Z++++++8++++++M++++++N++++++8++++++$++++++I++++++M++++++D++++++O+++++++ .
I + = : N M N 8 Z $ I $ O 8 N M N ~ = ? I .
? ? ? ? I I I I I I I ? ? .
D O $ , ~ + I + ~ , $ O D .
~ I ~ . ~ I = . ~ 7 = . .
: M O + : I : + Z M : .
Z : $ N ? . I . ? N $ : O .
N = 7 N = I = N 7 = D .
, 8 I Z Z I Z Z I 8 , .
M : 7 $ , N ~ I ~ M , $ 7 : M .
8 = O + $ I I ? $ + O ~ 8 .
+ D , N ~ Z I Z = N . , D + .
7 = N I = N I N = 7 N = 7 .
Z . = ? 8 D I N O ? = . Z .
8 M N 8 Z I Z 8 N M 8 .
. ? , + ~ ~ = ? I ? + ~ ~ = : ? . .
, 7 D D : I : 8 N 7 , .
O . $ I $ , O .
D . = I ~ D .
8 ~ O $ I $ Z ~ 8 .
M : 7 $ , M I M , $ 7 : M .
Z Z 7 O I O 7 Z $ .
=???????M???????Z??????????????????????Z???????M???????$??????????????????????O??????????????????????$???????M???????Z??????????????????????Z???????M???????= .
7 . I M 7 . I . 7 M I . 7 .
. ? 8 D ? . , I , , I D 8 ? . .
8 N Z ? : ~ I ~ : ? Z M 8.
, . ~ + I + : .
The grid, a digital frontier
I tried to picture clusters of information as they moved through the computer.
What do they look like? Ships, motorcycles. With the circuits like freeways, I kept dreaming of a world, I thought I'd never see.
And then, one day, I got in
*/

@ -0,0 +1,533 @@
package objects3D;
import GraphicsObjects.Utils;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.Color;
import org.newdawn.slick.opengl.Texture;
import java.util.HashMap;
public class Human {
// basic colours
static float black[] = {0.0f, 0.0f, 0.0f, 1.0f};
static float white[] = {1.0f, 1.0f, 1.0f, 1.0f};
static float grey[] = {0.5f, 0.5f, 0.5f, 1.0f};
static float spot[] = {0.1f, 0.1f, 0.1f, 0.5f};
// primary colours
static float red[] = {1.0f, 0.0f, 0.0f, 1.0f};
static float green[] = {0.0f, 1.0f, 0.0f, 1.0f};
static float blue[] = {0.0f, 0.0f, 1.0f, 1.0f};
// secondary colours
static float yellow[] = {1.0f, 1.0f, 0.0f, 1.0f};
static float magenta[] = {1.0f, 0.0f, 1.0f, 1.0f};
static float cyan[] = {0.0f, 1.0f, 1.0f, 1.0f};
// other colours
static float orange[] = {1.0f, 0.5f, 0.0f, 1.0f, 1.0f};
static float brown[] = {0.5f, 0.25f, 0.0f, 1.0f, 1.0f};
static float dkgreen[] = {0.0f, 0.5f, 0.0f, 1.0f, 1.0f};
static float pink[] = {1.0f, 0.6f, 0.6f, 1.0f, 1.0f};
private HashMap<String, Texture> textures;
public Human(HashMap textures) {
this.textures = textures;
}
// Implement using notes in Animation lecture
public void DrawHuman(float delta, boolean GoodAnimation) {
float theta = (float) (delta * 2 * Math.PI) * 8;
//a variable for anim sync
float LimbRotation;
//two animation
if (GoodAnimation) {
LimbRotation = (float) Math.cos(theta) * 60;
} else {
LimbRotation = 0;
}
//a sphere for drawing
Sphere sphere = new Sphere();
//a sphere with texture
TexSphere texSphere = new TexSphere();
//a cylinder for drawing
Cylinder cylinder = new Cylinder();
//Start to draw
GL11.glPushMatrix();
{
// move to pelvis
GL11.glTranslatef(0.0f, 0.5f, 0.0f);
//set up TEXTURE
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
//bind a color texture
Color.white.bind();
textures.get("wool_pink").bind();
//Enable TEXTURE
GL11.glEnable(GL11.GL_TEXTURE_2D);
//set texture Parameters
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.5f, 32, 32, textures.get("wool_pink"));
//Draw finish Disable TEXTURE
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.5f, 32, 32); // pelvis sphere
// chest
GL11.glColor3f(green[0], green[1], green[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(green));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.5f, 0.0f); // move to chest
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind(); //bind color
//bind texture
textures.get("tnt_side").bind(); //set texture
//Enable TEXTURE
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.5f, 32, 32, textures.get("tnt_side"));
GL11.glDisable(GL11.GL_TEXTURE_2D); //disable texture
// sphere.DrawSphere(0.5f, 32, 32);// chest sphere
GL11.glRotatef((float) (LimbRotation * 0.2), 0.0f, 0.0f, 1.0f);
// GL11.glRotatef((float) (LimbRotation * 3), 1f, 1f, 0f);
// neck
GL11.glColor3f(orange[0], orange[1], orange[2]); //set color
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(orange)); //set material render mode
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.0f);
GL11.glRotatef(-90.0f, 1.0f, 0.0f, 0.0f);
// GL11.glRotatef(45.0f,0.0f,1.0f,0.0f);
cylinder.DrawCylinder(0.15f, 0.7f, 32);
// head
GL11.glColor3f(red[0], red[1], red[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(red));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 1.0f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("awesomeface").bind(); //set texture
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.5f, 32, 32, textures.get("awesomeface"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.5f, 32, 32);
GL11.glPopMatrix();
}
GL11.glPopMatrix();
// left shoulder
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glRotatef((float) (LimbRotation * 0.5), 0f, 1f, 0f);
GL11.glTranslatef(0.5f, 0.4f, 0.0f);
//set texture Parameter
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_stone").bind(); //set texture
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_stone"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.25f, 32, 32);
// left arm
GL11.glColor3f(orange[0], orange[1], orange[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(orange));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.0f);
GL11.glRotatef(20, 0f, 0f, 1f);
GL11.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
GL11.glRotatef(LimbRotation, 1.0f, 0.0f, 0.0f);
// GL11.glRotatef(27.5f,0.0f,1.0f,0.0f);
cylinder.DrawCylinder(0.15f, 0.7f, 32);
// left elbow
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glRotatef((float) (LimbRotation * -0.5), 0f, 0f, 1f);
GL11.glTranslatef(0.0f, 0.0f, 0.75f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_stone").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.2f, 32, 32, textures.get("default_stone"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.2f, 32, 32);
//left forearm
GL11.glColor3f(orange[0], orange[1], orange[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(orange));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.0f);
GL11.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
// GL11.glRotatef(90.0f,0.0f,1.0f,0.0f);
cylinder.DrawCylinder(0.1f, 0.7f, 32);
// left hand
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.75f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_stone").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.2f, 32, 32, textures.get("default_stone"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.2f, 32, 32);
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
// to chest
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glRotatef((float) (LimbRotation * 0.5), 0f, 1f, 0f);
GL11.glTranslatef(-0.5f, 0.4f, 0.0f); // move to right arm
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_stone").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_stone"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.25f, 32, 32);
// right arm
GL11.glColor3f(orange[0], orange[1], orange[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(orange));
GL11.glPushMatrix();
{
GL11.glRotatef(-20, 0f, 0f, 1f);
GL11.glTranslatef(0.0f, 0.0f, 0.0f);
GL11.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
GL11.glRotatef(-LimbRotation, 1.0f, 0.0f, 0.0f);
// GL11.glRotatef(27.5f,0.0f,1.0f,0.0f);
cylinder.DrawCylinder(0.15f, 0.7f, 32);
// right elbow
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glRotatef((float) (LimbRotation * -0.5), 0f, 0f, 1f);
GL11.glTranslatef(0.0f, 0.0f, 0.75f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_stone").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.2f, 32, 32, textures.get("default_stone"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.2f, 32, 32);
//right forearm
GL11.glColor3f(orange[0], orange[1], orange[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(orange));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.0f);
GL11.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
// GL11.glRotatef(90.0f,0.0f,1.0f,0.0f);
cylinder.DrawCylinder(0.1f, 0.7f, 32);
// right hand
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.75f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_stone").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.2f, 32, 32, textures.get("default_stone"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.2f, 32, 32);
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
//now chest
}
GL11.glPopMatrix();
// GL11.glRotatef(LimbRotation * 3, 0.0f, 1.0f, 0.0f);
// GL11.glRotatef((float) (LimbRotation * -0.2), 0.0f, 1.0f, 0.0f);
// pelvis
// left hip
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.5f, -0.2f, 0.0f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_cobble").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_cobble"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.25f, 32, 32);
// left high leg
GL11.glColor3f(orange[0], orange[1], orange[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(orange));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.0f);
GL11.glRotatef(0.0f, 0.0f, 0.0f, 0.0f);
GL11.glRotatef((-LimbRotation / 2) + 90, 1.0f, 0.0f, 0.0f);
// GL11.glRotatef(90.0f,1.0f,0.0f,0.0f);
cylinder.DrawCylinder(0.15f, 0.7f, 32);
// left knee
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.75f);
GL11.glRotatef(0.0f, 0.0f, 0.0f, 0.0f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_cobble").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_cobble"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.25f, 32, 32);
//left low leg
GL11.glColor3f(orange[0], orange[1], orange[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(orange));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.0f);
// GL11.glRotatef(120.0f,1.0f,0.0f,0.0f);
// GL11.glRotatef(0.0f,0.0f,0.0f,0.0f);
cylinder.DrawCylinder(0.15f, 0.7f, 32);
// left foot
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.75f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_cobble").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.3f, 32, 32, textures.get("default_cobble"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.3f, 32, 32);
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
// pelvis
// right hip
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glTranslatef(-0.5f, -0.2f, 0.0f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_cobble").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_cobble"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.25f, 32, 32);
// right high leg
GL11.glColor3f(orange[0], orange[1], orange[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(orange));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.0f);
GL11.glRotatef(0.0f, 0.0f, 0.0f, 0.0f);
GL11.glRotatef((LimbRotation / 2) + 90, 1.0f, 0.0f, 0.0f);
// GL11.glRotatef(90.0f,1.0f,0.0f,0.0f);
cylinder.DrawCylinder(0.15f, 0.7f, 32);
// right knee
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.75f);
GL11.glRotatef(0.0f, 0.0f, 0.0f, 0.0f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_cobble").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.25f, 32, 32, textures.get("default_cobble"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.25f, 32, 32);
//right low leg
GL11.glColor3f(orange[0], orange[1], orange[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(orange));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.0f);
// GL11.glRotatef(120.0f,1.0f,0.0f,0.0f);
// GL11.glRotatef(0.0f,0.0f,0.0f,0.0f);
cylinder.DrawCylinder(0.15f, 0.7f, 32);
// left foot
GL11.glColor3f(blue[0], blue[1], blue[2]);
GL11.glMaterial(GL11.GL_FRONT, GL11.GL_AMBIENT_AND_DIFFUSE, Utils.ConvertForGL(blue));
GL11.glPushMatrix();
{
GL11.glTranslatef(0.0f, 0.0f, 0.75f);
GL11.glTexParameteri(
GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,
GL11.GL_REPEAT);
Color.white.bind();
textures.get("default_cobble").bind();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
texSphere.DrawTexSphere(0.3f, 32, 32, textures.get("default_cobble"));
GL11.glDisable(GL11.GL_TEXTURE_2D);
// sphere.DrawSphere(0.3f, 32, 32);
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
}
}
/*
}
*/

@ -0,0 +1,87 @@
package objects3D;
import org.lwjgl.opengl.GL11;
public class Sphere {
public Sphere() {
}
// Implement using notes and examine Tetrahedron to aid in the coding look at lecture 7 , 7b and 8
// 7b should be your primary source, we will cover more about circles in later lectures to understand why the code works
public void DrawSphere(float radius, float nSlices, float nSegments) {
//Constant PI to use when drawing
final float pi = (float) Math.PI;
//From -pi to pi, this inctheta is the angle of each piece horizontally
final float inctheta = (float) ((2.0f * Math.PI) / nSlices);
//From -pi/2 to pi/2, this incphi is the angle of each piece vertically
final float incphi = (float) (Math.PI / nSegments);
//INIT GL
//GL_QUADS draws quadrangle
GL11.glBegin(GL11.GL_QUADS);
//first loop is the horizontal loop
for (float theta = -pi; theta < pi; theta += inctheta) {
//second loop is the vertical loop
for (float phi = -(pi / 2.0f); phi < (pi / 2.0f); phi += incphi) {
//next angle vertically
float next_phi = phi + incphi;
//next angle horizontally
float next_theta = theta + inctheta;
//point 1, left lower point
float x1 = (float) (radius * Math.cos(phi) * Math.cos(theta));
float y1 = (float) (radius * Math.cos(phi) * Math.sin(theta));
float z1 = (float) (radius * Math.sin(phi));
//point 2, left upper point
float x2 = (float) (radius * Math.cos(next_phi) * Math.cos(theta));
float y2 = (float) (radius * Math.cos(next_phi) * Math.sin(theta));
float z2 = (float) (radius * Math.sin(next_phi));
//point 3, right lower point
float x3 = (float) (radius * Math.cos(phi) * Math.cos(next_theta));
float y3 = (float) (radius * Math.cos(phi) * Math.sin(next_theta));
float z3 = (float) (radius * Math.sin(phi));
//point 4, right upper point
float x4 = (float) (radius * Math.cos(next_phi) * Math.cos(next_theta));
float y4 = (float) (radius * Math.cos(next_phi) * Math.sin(next_theta));
float z4 = (float) (radius * Math.sin(next_phi));
//here the normal is the direction of this vector.
//normal of point 1
GL11.glNormal3f(x1, y1, z1);
//point 1
GL11.glVertex3f(x1, y1, z1);
//normal of point 2
GL11.glNormal3f(x2, y2, z2);
//point 2
GL11.glVertex3f(x2, y2, z2);
//normal of point 3
GL11.glNormal3f(x4, y4, z4);
//point 3
GL11.glVertex3f(x4, y4, z4);
//normal of point 4
GL11.glNormal3f(x3, y3, z3);
//point 4
GL11.glVertex3f(x3, y3, z3);
}
}
//END GL
GL11.glEnd();
}
}

@ -0,0 +1,163 @@
package objects3D;
import GraphicsObjects.Point4f;
import GraphicsObjects.Vector4f;
import org.lwjgl.opengl.GL11;
public class TexCube {
public TexCube() {
}
// Implement using notes and looking at TexSphere
public void DrawTexCube() {
//a cube have 8 vertices so this is the coordinates of the vertices
Point4f vertices[] = {new Point4f(-1.0f, -1.0f, -1.0f, 0.0f),
new Point4f(-1.0f, -1.0f, 1.0f, 0.0f),
new Point4f(-1.0f, 1.0f, -1.0f, 0.0f),
new Point4f(-1.0f, 1.0f, 1.0f, 0.0f),
new Point4f(1.0f, -1.0f, -1.0f, 0.0f),
new Point4f(1.0f, -1.0f, 1.0f, 0.0f),
new Point4f(1.0f, 1.0f, -1.0f, 0.0f),
new Point4f(1.0f, 1.0f, 1.0f, 0.0f)};
//each face of the cube consists four edges, there are 6 faces in total
//so, this array has 6 element, each element contains the related edges
int faces[][] = {{1, 5, 4, 0},
{2, 6, 4, 0},
{3, 2, 0, 1},
{6, 7, 5, 4},
{7, 3, 1, 5},
{7, 6, 2, 3}};
//this array is used to calculate the normal for lighting
// int n_faces[][] = {{0, 4, 5, 1},
// {0, 2, 6, 4},
// {0, 1, 3, 2},
// {4, 6, 7, 5},
// {1, 5, 7, 3},
// {2, 3, 7, 6}};
//INIT GL
GL11.glBegin(GL11.GL_QUADS);
for (int face = 0; face < 6; face++) { // per face
//a new way of calculating the normal vector by letting the face center minus the model center
Point4f face_center = new Point4f(
(vertices[faces[face][0]].x + vertices[faces[face][2]].x) / 2,
(vertices[faces[face][0]].y + vertices[faces[face][2]].y) / 2,
(vertices[faces[face][0]].z + vertices[faces[face][2]].z) / 2,
0
);
Point4f model_center = new Point4f(0, 0, 0, 0);
Vector4f normal = face_center.MinusPoint(model_center);
//calculate the normal vector using cross product which returns a vector
//that is perpendicular to these two vector
// Vector4f v = vertices[n_faces[face][1]].MinusPoint(vertices[n_faces[face][0]]);
// Vector4f w = vertices[n_faces[face][3]].MinusPoint(vertices[n_faces[face][0]]);
// Vector4f normal = v.cross(w).Normal();
GL11.glNormal3f(normal.x, normal.y, normal.z);
//top left
GL11.glTexCoord2f(0f, 1f);
GL11.glVertex3f(vertices[faces[face][0]].x, vertices[faces[face][0]].y, vertices[faces[face][0]].z);
//top right
GL11.glTexCoord2f(1f, 1f);
GL11.glVertex3f(vertices[faces[face][1]].x, vertices[faces[face][1]].y, vertices[faces[face][1]].z);
//right bottom
GL11.glTexCoord2f(1f, 0f);
GL11.glVertex3f(vertices[faces[face][2]].x, vertices[faces[face][2]].y, vertices[faces[face][2]].z);
//left bottom
GL11.glTexCoord2f(0f, 0f);
GL11.glVertex3f(vertices[faces[face][3]].x, vertices[faces[face][3]].y, vertices[faces[face][3]].z);
} // per face
GL11.glEnd();
}
public void DrawTexCube(float number) {
//a cube have 8 vertices so this is the coordinates of the vertices
Point4f vertices[] = {new Point4f(-1.0f, -1.0f, -1.0f, 0.0f),
new Point4f(-1.0f, -1.0f, 1.0f, 0.0f),
new Point4f(-1.0f, 1.0f, -1.0f, 0.0f),
new Point4f(-1.0f, 1.0f, 1.0f, 0.0f),
new Point4f(1.0f, -1.0f, -1.0f, 0.0f),
new Point4f(1.0f, -1.0f, 1.0f, 0.0f),
new Point4f(1.0f, 1.0f, -1.0f, 0.0f),
new Point4f(1.0f, 1.0f, 1.0f, 0.0f)};
//each face of the cube consists four edges, there are 6 faces in total
//so, this array has 6 element, each element contains the related edges
int faces[][] = {{1, 5, 4, 0},
{2, 6, 4, 0},
{3, 2, 0, 1},
{6, 7, 5, 4},
{7, 3, 1, 5},
{7, 6, 2, 3}};
GL11.glBegin(GL11.GL_QUADS);
for (int face = 0; face < 6; face++) { // per face
//a new way of calculating the normal vector by letting the face center minus the model center
Point4f face_center = new Point4f(
(vertices[faces[face][0]].x + vertices[faces[face][2]].x) / 2,
(vertices[faces[face][0]].y + vertices[faces[face][2]].y) / 2,
(vertices[faces[face][0]].z + vertices[faces[face][2]].z) / 2,
0
);
Point4f model_center = new Point4f(0, 0, 0, 0);
Vector4f normal = face_center.MinusPoint(model_center);
//calculate the normal vector using cross product which returns a vector
//that is perpendicular to these two vector
// Vector4f v = vertices[n_faces[face][1]].MinusPoint(vertices[n_faces[face][0]]);
// Vector4f w = vertices[n_faces[face][3]].MinusPoint(vertices[n_faces[face][0]]);
// Vector4f normal = v.cross(w).Normal();
GL11.glNormal3f(normal.x, normal.y, normal.z);
//number indicate the repeating times
//top left
GL11.glTexCoord2f(0f, number);
GL11.glVertex3f(vertices[faces[face][0]].x, vertices[faces[face][0]].y, vertices[faces[face][0]].z);
//top right
GL11.glTexCoord2f(number, number);
GL11.glVertex3f(vertices[faces[face][1]].x, vertices[faces[face][1]].y, vertices[faces[face][1]].z);
//right bottom
GL11.glTexCoord2f(number, 0f);
GL11.glVertex3f(vertices[faces[face][2]].x, vertices[faces[face][2]].y, vertices[faces[face][2]].z);
//left bottom
GL11.glTexCoord2f(0f, 0f);
GL11.glVertex3f(vertices[faces[face][3]].x, vertices[faces[face][3]].y, vertices[faces[face][3]].z);
} // per face
GL11.glEnd();
}
}
/*
}
*/

@ -0,0 +1,89 @@
package objects3D;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.opengl.Texture;
public class TexSphere {
static float red[] = {1.0f, 0.0f, 0.0f, 1.0f};
static float green[] = {0.0f, 1.0f, 0.0f, 1.0f};
static float blue[] = {0.0f, 0.0f, 1.0f, 1.0f};
static float white[] = {1.0f, 1.0f, 1.0f, 1.0f};
public TexSphere() {
}
// Implement using notes and examine Tetrahedron to aid in the coding look at lecture 7 , 7b and 8
// 7b should be your primary source, we will cover more about circles in later lectures to understand why the code works
public void DrawTexSphere(float radius, float nSlices, float nSegments, Texture myTexture) {
float x, y, z;
float s, t; // texture coordinates
//angle for drawing the sphere
//From -pi to pi, this inctheta is the angle of each piece horizontally
float inctheta = (float) ((2.0f * Math.PI) / nSlices);
//From -pi/2 to pi/2, this incphi is the angle of each piece vertically
float incphi = (float) (Math.PI / nSegments);
//INIT GL
//GL_QUADS draws quadrangle
GL11.glBegin(GL11.GL_QUADS);
//first loop is the horizontal loop
for (float theta = (float) -Math.PI; theta < Math.PI; theta += inctheta) {
//second loop is the vertical loop
for (float phi = (float) -(Math.PI / 2.0f); phi < (Math.PI / 2.0f); phi += incphi) {
//point 1
x = (float) (Math.cos(phi) * Math.cos(theta) * radius);
y = (float) (Math.cos(phi) * Math.sin(theta) * radius);
z = (float) (Math.sin(phi) * radius);
//texture coordinate
t = (float) (phi / (float) Math.PI) + 0.5f;
s = (float) (theta / Math.PI * 2.0f) + 0.5f;
//GL11.glTexCoord2f(s,t); // should be here but seems to be a bug in LWJGL
GL11.glNormal3f(x, y, z);
GL11.glVertex3f(x, y, z);
//point 2
x = (float) (Math.cos(phi) * Math.cos(theta + inctheta) * radius);
y = (float) (Math.cos(phi) * Math.sin(theta + inctheta) * radius);
z = (float) (Math.sin(phi) * radius);
t = (float) (((float) phi / (float) Math.PI) + 0.5f);
s = (float) ((((float) theta + inctheta) / ((float) Math.PI * 2.0f))) + 0.5f;
//texture coordinate
GL11.glTexCoord2f(s, t);
GL11.glNormal3f(x, y, z); //Mistake in previous version fixed ( abey 11/1/2018)
GL11.glVertex3f(x, y, z); // Top Right corner
//point 3
x = (float) (Math.cos(phi + incphi) * Math.cos(theta + inctheta) * radius);
y = (float) (Math.cos(phi + incphi) * Math.sin(theta + inctheta) * radius);
z = (float) (Math.sin(phi + incphi) * radius);
t = (float) ((((float) phi + incphi) / (float) Math.PI) + 0.5f);
s = (float) ((((float) theta + inctheta) / ((float) Math.PI * 2.0f)) + 0.5f);
GL11.glTexCoord2f(s, t);
GL11.glNormal3f(x, y, z);
GL11.glVertex3f(x, y, z);
//point 4
x = (float) (Math.cos(phi + incphi) * Math.cos(theta) * radius);
y = (float) (Math.cos(phi + incphi) * Math.sin(theta) * radius);
z = (float) (Math.sin(phi + incphi) * radius);
t = (float) ((((float) phi + incphi) / (float) Math.PI) + 0.5f);
s = (float) (((float) theta / ((float) Math.PI * 2.0f)) + 0.5f);
//set texture coordinate
GL11.glTexCoord2f(s, t);
GL11.glNormal3f(x, y, z);
GL11.glVertex3f(x, y, z);
}
}
GL11.glEnd();
}
}
Loading…
Cancel
Save