This repository has been archived by the owner on Feb 12, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adição de projecto de exemplo da biblioteca CGGL. Este exemplo mostra…
… uma bola a saltar em cima de um plano (com atenuação de altura de acordo com efeito da gravidade).
- Loading branch information
Showing
9 changed files
with
400 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
#include "ball.h" | ||
|
||
using namespace cggl; | ||
|
||
Ball::Ball(Vector3 pos, float rad): position(pos), radius(rad){ | ||
|
||
velocity = Vector3(0,20,0); | ||
} | ||
|
||
//void Ball::Update(int deltaTimeMilis){ | ||
// Object::Update(deltaTimeMilis); | ||
// double t = deltaTimeMilis/(float)1000; | ||
// | ||
//} | ||
|
||
void Ball::Draw(){ | ||
Object::Draw(); | ||
glEnable(GL_LIGHTING); | ||
glEnable(GL_LIGHT0); | ||
glPushMatrix(); | ||
float diffuseColor[3] = { 0.8, 0, 0 }; | ||
glColor3f(diffuseColor[0], diffuseColor[1], diffuseColor[2]); | ||
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuseColor); | ||
|
||
glTranslated(position.x, position.y, position.z); | ||
glutSolidSphere(radius, 30, 30); | ||
glPopMatrix(); | ||
glDisable(GL_LIGHTING); | ||
} | ||
|
||
|
||
void Ball::Update(int deltaTimeMilis){ | ||
Object::Update(deltaTimeMilis); | ||
|
||
double t = deltaTimeMilis/(float)1000; | ||
|
||
double mass = 0.5; | ||
// a = F / m | ||
double fg = mass * -9.8; // fg = m*g | ||
double fdy = -6*3.14*radius*0.00001827*velocity.y; | ||
double fdx = -6*3.14*radius*0.00001827*velocity.x; | ||
|
||
double ax = (fdx) / mass; | ||
double ay = (fg + fdy) / mass; | ||
|
||
// v = v0 + a*t | ||
velocity.y += ay * t; | ||
velocity.x += ax * t; // air resistance | ||
|
||
// x = x0+ vo*t + 0.5*a*t*t | ||
position.y = position.y + velocity.y*t + 0.5 * ay * t * t; | ||
position.x = position.x + velocity.x*t; | ||
|
||
if(position.y <= radius){ | ||
position.y = radius; | ||
velocity.y = -velocity.y * .8; // COR - coeficiente de restituicao (simulacao) | ||
velocity.x = velocity.x * .8; // atrito (simulacao) | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/********************************************************************************** | ||
* Definição do objecto Ball. | ||
* | ||
* | ||
* -------------------------------------------------------------------------------- | ||
* Instituto Superior de Engenharia de Lisboa | ||
* Departamento de Engenharia de Electrónica e Telecomunicações e de Computadores | ||
* Licenciatura em Engenharia Informática e de Computadores | ||
* Computação Gráfica | ||
* | ||
* (c) Carlos Guedes e José Branco - Novembro de 2007 | ||
**********************************************************************************/ | ||
#ifndef _BALL_H_ | ||
#define _BALL_H_ | ||
|
||
#include <GL/glut.h> | ||
#include <cggl/App.h> | ||
|
||
|
||
class Ball : public cggl::Object { | ||
|
||
cggl::Vector3 position; // posição inicial | ||
float radius; | ||
cggl::Vector3 velocity; | ||
|
||
public: | ||
Ball(cggl::Vector3 pos, float rad); | ||
|
||
void Update(int deltaTimeMilis); | ||
void Draw(); | ||
}; | ||
|
||
#endif //_BALL_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<ItemGroup Label="ProjectConfigurations"> | ||
<ProjectConfiguration Include="Debug|Win32"> | ||
<Configuration>Debug</Configuration> | ||
<Platform>Win32</Platform> | ||
</ProjectConfiguration> | ||
<ProjectConfiguration Include="Release|Win32"> | ||
<Configuration>Release</Configuration> | ||
<Platform>Win32</Platform> | ||
</ProjectConfiguration> | ||
</ItemGroup> | ||
<PropertyGroup Label="Globals"> | ||
<ProjectGuid>{94AB1AE8-D1DB-4122-A6B3-C520BED0F44C}</ProjectGuid> | ||
<Keyword>Win32Proj</Keyword> | ||
<RootNamespace>BouncingBall</RootNamespace> | ||
</PropertyGroup> | ||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | ||
<ConfigurationType>Application</ConfigurationType> | ||
<UseDebugLibraries>true</UseDebugLibraries> | ||
<CharacterSet>Unicode</CharacterSet> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||
<ConfigurationType>Application</ConfigurationType> | ||
<UseDebugLibraries>false</UseDebugLibraries> | ||
<WholeProgramOptimization>true</WholeProgramOptimization> | ||
<CharacterSet>Unicode</CharacterSet> | ||
</PropertyGroup> | ||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||
<ImportGroup Label="ExtensionSettings"> | ||
</ImportGroup> | ||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||
</ImportGroup> | ||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||
</ImportGroup> | ||
<PropertyGroup Label="UserMacros" /> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||
<LinkIncremental>true</LinkIncremental> | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||
<LinkIncremental>false</LinkIncremental> | ||
</PropertyGroup> | ||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||
<ClCompile> | ||
<PrecompiledHeader> | ||
</PrecompiledHeader> | ||
<WarningLevel>Level3</WarningLevel> | ||
<Optimization>Disabled</Optimization> | ||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
<AdditionalIncludeDirectories>$(SolutionDir)dependencies\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||
</ClCompile> | ||
<Link> | ||
<SubSystem>Console</SubSystem> | ||
<GenerateDebugInformation>true</GenerateDebugInformation> | ||
<AdditionalDependencies>../../Dependencies/lib/cggl_engine.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||
</Link> | ||
</ItemDefinitionGroup> | ||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||
<ClCompile> | ||
<WarningLevel>Level3</WarningLevel> | ||
<PrecompiledHeader> | ||
</PrecompiledHeader> | ||
<Optimization>MaxSpeed</Optimization> | ||
<FunctionLevelLinking>true</FunctionLevelLinking> | ||
<IntrinsicFunctions>true</IntrinsicFunctions> | ||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||
</ClCompile> | ||
<Link> | ||
<SubSystem>Console</SubSystem> | ||
<GenerateDebugInformation>true</GenerateDebugInformation> | ||
<EnableCOMDATFolding>true</EnableCOMDATFolding> | ||
<OptimizeReferences>true</OptimizeReferences> | ||
</Link> | ||
</ItemDefinitionGroup> | ||
<ItemGroup> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\App.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Camera.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\FPSCounter.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\glm.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Globals.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\GLTexture.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Input.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\MathUtils.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Model3DS.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Object.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\ObjModel.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\SkyBox.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\TextureLoader.h" /> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\TextWriter.h" /> | ||
<ClInclude Include="Ball.h" /> | ||
<ClInclude Include="BouncingBallApp.h" /> | ||
<ClInclude Include="SimplePlane.h" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ClCompile Include="Ball.cpp" /> | ||
<ClCompile Include="BouncingBallApp.cpp" /> | ||
</ItemGroup> | ||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||
<ImportGroup Label="ExtensionTargets"> | ||
</ImportGroup> | ||
</Project> |
78 changes: 78 additions & 0 deletions
78
OpenGL/Demos/CGGL/BouncingBall/BouncingBall.vcxproj.filters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<ItemGroup> | ||
<Filter Include="Source Files"> | ||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> | ||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> | ||
</Filter> | ||
<Filter Include="Header Files"> | ||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> | ||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> | ||
</Filter> | ||
<Filter Include="Resource Files"> | ||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> | ||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> | ||
</Filter> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Input.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\MathUtils.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Model3DS.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Object.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\ObjModel.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\SkyBox.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\TextureLoader.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\TextWriter.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\App.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Camera.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\FPSCounter.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\glm.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\Globals.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="..\..\Dependencies\include\cggl\GLTexture.h"> | ||
<Filter>Header Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="Ball.h"> | ||
<Filter>Source Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="SimplePlane.h"> | ||
<Filter>Source Files</Filter> | ||
</ClInclude> | ||
<ClInclude Include="BouncingBallApp.h"> | ||
<Filter>Source Files</Filter> | ||
</ClInclude> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<ClCompile Include="Ball.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
<ClCompile Include="BouncingBallApp.cpp"> | ||
<Filter>Source Files</Filter> | ||
</ClCompile> | ||
</ItemGroup> | ||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
#include <GL/glut.h> | ||
#include <cggl/App.h> | ||
#include <cggl/FPSCounter.h> | ||
|
||
#include "BouncingBallApp.h" | ||
#include "Ball.h" | ||
#include "SimplePlane.h" | ||
|
||
using namespace cggl; | ||
|
||
void BouncingBallApp::CreateScene() { | ||
App::Camera->LookAt(Vector3(0, 20, 50), Vector3(0,20,0), Vector3(0,1,0)); | ||
|
||
RegisterObject( new Ball(Vector3(-10, 2, 0), 2) ); | ||
|
||
RegisterObject( new SimplePlane(0, 100) ); | ||
RegisterObject( new FPSCounter() ); | ||
} | ||
|
||
void BouncingBallApp::Draw(){ | ||
App::Draw(); | ||
} | ||
|
||
void BouncingBallApp::Update(int deltaTimeMilis) { | ||
App::Update(deltaTimeMilis); | ||
} | ||
|
||
|
||
|
||
|
||
// ------------------------------------------------------------------------------------ | ||
void main(int argc, char **argv) { | ||
BouncingBallApp app; | ||
app.Run(argc, argv); | ||
} | ||
// ------------------------------------------------------------------------------------ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
/********************************************************************************** | ||
* Aplicação específica a implementar: AP3. | ||
* Serve como exemplo de utilização de fisica em objectos. | ||
* | ||
* A aplicação representa uma cena que contém uma bola | ||
* a saltar na vertical, em cima de um plano segundo as leis da fisica. | ||
* | ||
* | ||
* -------------------------------------------------------------------------------- | ||
* Instituto Superior de Engenharia de Lisboa | ||
* Departamento de Engenharia de Electrónica e Telecomunicações e de Computadores | ||
* Licenciatura em Engenharia Informática e de Computadores | ||
* Computação Gráfica | ||
* | ||
* (c) Carlos Guedes e José Branco - Novembro de 2007 | ||
**********************************************************************************/ | ||
|
||
#include <GL/glut.h> | ||
#include <cggl/App.h> | ||
|
||
class BouncingBallApp : public cggl::App { | ||
|
||
public: | ||
void CreateScene(); | ||
void Draw(); | ||
void Update(int deltaTimeMilis); | ||
}; |
Oops, something went wrong.