first commit
@ -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>
|
@ -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>
|
@ -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>
|
@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Main-Class: MainWindow
|
||||
|
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 595 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 37 KiB |
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)
|
||||
|
After Width: | Height: | Size: 138 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 595 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 37 KiB |
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();
|
||||
}
|
||||
}
|
||||
|