build basic coil segment with some problems ;)
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										16
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    // Use IntelliSense to learn about possible attributes.
 | 
				
			||||||
 | 
					    // Hover to view descriptions of existing attributes.
 | 
				
			||||||
 | 
					    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 | 
				
			||||||
 | 
					    "version": "0.2.0",
 | 
				
			||||||
 | 
					    "configurations": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "type": "lldb",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "name": "Debug",
 | 
				
			||||||
 | 
					            "program": "${workspaceFolder}/<executable file>",
 | 
				
			||||||
 | 
					            "args": [],
 | 
				
			||||||
 | 
					            "cwd": "${workspaceFolder}"
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -3,6 +3,7 @@ project(TimeCoil)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
include(FetchContent)
 | 
					include(FetchContent)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SET(CMAKE_BUILD_TYPE Debug)
 | 
				
			||||||
SET(PROJECT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp src/glad.c
 | 
					SET(PROJECT_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp src/glad.c
 | 
				
			||||||
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/coil/coil.cpp
 | 
					                    ${CMAKE_CURRENT_SOURCE_DIR}/src/coil/coil.cpp
 | 
				
			||||||
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/coil/segment.cpp
 | 
					                    ${CMAKE_CURRENT_SOURCE_DIR}/src/coil/segment.cpp
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								build.sh
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								build.sh
									
									
									
									
									
								
							@@ -1,2 +1,2 @@
 | 
				
			|||||||
#!/usr/bin/env bash
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
cd build && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_C_FLAGS="-g -v -da -Q -O0" .. && make && ./TimeCoil > ../points.csv && python ../tools/build_3d.py ../points.csv
 | 
					cd build && cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_C_FLAGS="-g -v -da -Q -O0" .. && make && ./TimeCoil # > ../points.csv && python ../tools/build_3d.py ../points.csv
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,15 @@
 | 
				
			|||||||
#version 330 core
 | 
					#version 330 core
 | 
				
			||||||
layout (location = 0) in vec3 aPos;
 | 
					layout (location = 0) in vec3 aPos;
 | 
				
			||||||
layout (location = 1) in vec3 col;
 | 
					layout (location = 1) in vec3 col;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uniform mat4 model;
 | 
				
			||||||
 | 
					uniform mat4 view;
 | 
				
			||||||
 | 
					uniform mat4 projection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
out vec3 frag_col;
 | 
					out vec3 frag_col;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void main()
 | 
					void main()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    frag_col = col;
 | 
					    frag_col = col;
 | 
				
			||||||
    gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);
 | 
					    gl_Position = projection * view * model * vec4(aPos, 1.0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,15 +1,18 @@
 | 
				
			|||||||
 | 
					#include <cstdint>
 | 
				
			||||||
#include <glad/glad.h>
 | 
					#include <glad/glad.h>
 | 
				
			||||||
#include <GLFW/glfw3.h>
 | 
					#include <GLFW/glfw3.h>
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <coil/coil.hpp>
 | 
					#include <coil/coil.hpp>
 | 
				
			||||||
#include <coil/segment.hpp>
 | 
					#include <coil/segment.hpp>
 | 
				
			||||||
#include <utils/utils.hpp>
 | 
					#include <utils/utils.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Coil::Coil(uint32_t currentYear, uint32_t amountOfSegments) 
 | 
					Coil::Coil(uint32_t currentYear, uint32_t amountOfSegments, uint32_t sliceDetalization, float radius, float width) 
 | 
				
			||||||
	: currentYear(currentYear) {
 | 
						: radius(radius), width(width), currentYear(currentYear) {
 | 
				
			||||||
	for (short i = amountOfSegments / -2.; i < amountOfSegments / 2.; i++) {
 | 
						for (short i = amountOfSegments / -2.; i < amountOfSegments / 2.; i++) {
 | 
				
			||||||
		uint32_t year = this->currentYear + i;
 | 
							uint32_t year = this->currentYear + i;
 | 
				
			||||||
    	segments.push_back(CoilSegment(this, year, segmentHeight, i, 3,false));
 | 
					
 | 
				
			||||||
 | 
					    	segments.push_back(CoilSegment(this, year, segmentHeight, i, sliceDetalization,false));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -17,20 +20,47 @@ std::vector<CoilSegment> &Coil::getSegments() {
 | 
				
			|||||||
	return segments;
 | 
						return segments;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
double Coil::getWidth() {
 | 
					float Coil::getWidth() {
 | 
				
			||||||
	return width;
 | 
						return width;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Coil::render() {
 | 
					float Coil::getRadius() {
 | 
				
			||||||
	prepareShaders();
 | 
						return radius;
 | 
				
			||||||
	uint64_t VBO;
 | 
					}
 | 
				
			||||||
	glGenBuffers(1, (unsigned int*) &(VBO));
 | 
					 | 
				
			||||||
	glBindBuffer(GL_ARRAY_BUFFER, VBO); 
 | 
					 | 
				
			||||||
	for (CoilSegment segment : segments) {
 | 
					 | 
				
			||||||
		double* vertices = segment.getVertices();
 | 
					 | 
				
			||||||
		uint64_t verticesLength = segment.getVerticesLength();
 | 
					 | 
				
			||||||
		glBufferData(GL_ARRAY_BUFFER, verticesLength, vertices, GL_STATIC_DRAW);
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Coil::initGLBuffers() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glGenVertexArrays(1, &VAO);
 | 
				
			||||||
 | 
						glGenBuffers(1, &VBO);
 | 
				
			||||||
 | 
						glGenBuffers(1, &EBO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glBindVertexArray(VAO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glBindBuffer(GL_ARRAY_BUFFER, VBO);
 | 
				
			||||||
 | 
						glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);
 | 
				
			||||||
 | 
						glEnableVertexAttribArray(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*) (3 * sizeof(float)));
 | 
				
			||||||
 | 
						glEnableVertexAttribArray(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glBindVertexArray(0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Coil::render() {
 | 
				
			||||||
 | 
						glBindVertexArray(VAO);
 | 
				
			||||||
 | 
						std::cout << "Rendering a coil." << std::endl;
 | 
				
			||||||
 | 
						for (CoilSegment segment : segments) {
 | 
				
			||||||
 | 
							std::cout << "Rendering " << segment.getYear() << std::endl;
 | 
				
			||||||
 | 
							segment.fillVBO();
 | 
				
			||||||
 | 
							uint64_t indicesCount = segment.fillEBO(EBO);
 | 
				
			||||||
 | 
							glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
 | 
				
			||||||
 | 
							// glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 | 
				
			||||||
 | 
							// glDrawArrays(GL_POINTS, 0, segment.getVerticesLength());
 | 
				
			||||||
 | 
							glDrawElements(GL_TRIANGLES_ADJACENCY, sizeof(unsigned int)*indicesCount, GL_UNSIGNED_INT, 0);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						glBindVertexArray(0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,5 +1,6 @@
 | 
				
			|||||||
#include <vector>
 | 
					#include <vector>
 | 
				
			||||||
#include "segment.hpp"
 | 
					#include "segment.hpp"
 | 
				
			||||||
 | 
					#include <glad/glad.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef COIL_HPP 
 | 
					#ifndef COIL_HPP 
 | 
				
			||||||
#define COIL_HPP
 | 
					#define COIL_HPP
 | 
				
			||||||
@@ -9,18 +10,22 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class Coil {
 | 
					class Coil {
 | 
				
			||||||
    // distance between coil center and nearest to it coil edge 
 | 
					    // distance between coil center and nearest to it coil edge 
 | 
				
			||||||
    double radius;
 | 
					    float radius;
 | 
				
			||||||
    // distance between coil slices edges
 | 
					    // distance between coil slices edges
 | 
				
			||||||
    double width;
 | 
					    float width;
 | 
				
			||||||
    double segmentHeight;
 | 
					    float segmentHeight;
 | 
				
			||||||
    uint32_t currentYear;
 | 
					    uint32_t currentYear;
 | 
				
			||||||
    std::vector<CoilSegment> segments;
 | 
					    std::vector<CoilSegment> segments;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GLuint VBO, VAO, EBO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public:
 | 
					    public:
 | 
				
			||||||
    Coil(uint32_t currentYear, uint32_t amountOfSegments);
 | 
					    Coil(uint32_t currentYear, uint32_t amountOfSegments, uint32_t sliceDetalization, float radius, float width);
 | 
				
			||||||
    std::vector<CoilSegment> &getSegments();
 | 
					    std::vector<CoilSegment> &getSegments();
 | 
				
			||||||
    double getWidth();
 | 
					    float getWidth();
 | 
				
			||||||
 | 
					    float getRadius();
 | 
				
			||||||
    void render();
 | 
					    void render();
 | 
				
			||||||
 | 
					    void initGLBuffers();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // COIL_HPP
 | 
					#endif // COIL_HPP
 | 
				
			||||||
@@ -1,8 +1,10 @@
 | 
				
			|||||||
 | 
					#include <glm/common.hpp>
 | 
				
			||||||
#include <glm/ext/matrix_float4x4.hpp>
 | 
					#include <glm/ext/matrix_float4x4.hpp>
 | 
				
			||||||
#include <glm/ext/matrix_transform.hpp>
 | 
					#include <glm/ext/matrix_transform.hpp>
 | 
				
			||||||
#include <glm/trigonometric.hpp>
 | 
					#include <glm/trigonometric.hpp>
 | 
				
			||||||
#include <cstring>
 | 
					#include <cstring>
 | 
				
			||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <fstream>
 | 
				
			||||||
#include <glm/glm.hpp>
 | 
					#include <glm/glm.hpp>
 | 
				
			||||||
#include <cstdint>
 | 
					#include <cstdint>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -44,11 +46,12 @@ CoilSegment::CoilSegment(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void CoilSegment::init () {
 | 
					void CoilSegment::init () {
 | 
				
			||||||
    verticesLength = DAYS_IN_YEAR * FIELDS_IN_POINT * (sliceDetalization+2);
 | 
					    verticesLength = DAYS_IN_YEAR * FIELDS_IN_POINT * (sliceDetalization+2);
 | 
				
			||||||
    vertices = (double *) calloc(verticesLength, sizeof(double));
 | 
					    vertices = (float *) calloc(verticesLength, sizeof(float));
 | 
				
			||||||
    if (vertices == NULL) {
 | 
					    if (vertices == NULL) {
 | 
				
			||||||
        cerr << "Allocation failed" << endl;
 | 
					        cerr << "Allocation failed" << endl;
 | 
				
			||||||
        exit(-1);
 | 
					        exit(-1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    calculate();
 | 
				
			||||||
    // cout << "Initialized CoilSegment" 
 | 
					    // cout << "Initialized CoilSegment" 
 | 
				
			||||||
    //     << "(year: " << year 
 | 
					    //     << "(year: " << year 
 | 
				
			||||||
    //     << ", height: " << height 
 | 
					    //     << ", height: " << height 
 | 
				
			||||||
@@ -69,9 +72,19 @@ void CoilSegment::printVertices() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
double *CoilSegment::calculateSlice() {
 | 
					float *CoilSegment::calculateSlice() {
 | 
				
			||||||
    uint32_t size = (/*start and end of a slize*/2 + sliceDetalization) * FIELDS_IN_POINT * sizeof(double);
 | 
					    uint32_t size = (/*start and end of a slize*/2 + sliceDetalization) * FIELDS_IN_POINT * sizeof(float);
 | 
				
			||||||
    double *slice = (double *)malloc(size);
 | 
					    float *slice = (float *)malloc(size);
 | 
				
			||||||
 | 
					    mat4 transform = mat4(1.);
 | 
				
			||||||
 | 
					    transform = glm::scale(
 | 
				
			||||||
 | 
					        transform,
 | 
				
			||||||
 | 
					        vec3(
 | 
				
			||||||
 | 
					            coil->getWidth(),
 | 
				
			||||||
 | 
					            10,
 | 
				
			||||||
 | 
					            1
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					    vec3 point = vec3(cos(0), sin(0), 0);
 | 
				
			||||||
    // Start of a slice
 | 
					    // Start of a slice
 | 
				
			||||||
    slice[0] = cos(0);
 | 
					    slice[0] = cos(0);
 | 
				
			||||||
    slice[1] = sin(0);
 | 
					    slice[1] = sin(0);
 | 
				
			||||||
@@ -80,7 +93,7 @@ double *CoilSegment::calculateSlice() {
 | 
				
			|||||||
    slice[4] = 1;
 | 
					    slice[4] = 1;
 | 
				
			||||||
    slice[5] = 1;
 | 
					    slice[5] = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    double degreeByPoint = -180. / (sliceDetalization + 1);
 | 
					    float degreeByPoint = -180. / (sliceDetalization + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (uint32_t i = 1; i <= sliceDetalization; i ++) {
 | 
					    for (uint32_t i = 1; i <= sliceDetalization; i ++) {
 | 
				
			||||||
        uint32_t offset = FIELDS_IN_POINT * i;
 | 
					        uint32_t offset = FIELDS_IN_POINT * i;
 | 
				
			||||||
@@ -94,7 +107,7 @@ double *CoilSegment::calculateSlice() {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // End of a slice
 | 
					    // End of a slice
 | 
				
			||||||
    uint32_t endIndex = (size / sizeof(double) - FIELDS_IN_POINT); 
 | 
					    uint32_t endIndex = (size / sizeof(float) - FIELDS_IN_POINT); 
 | 
				
			||||||
    slice[endIndex + 0] = round_to_presicion(cos(radians(180.)), 5);
 | 
					    slice[endIndex + 0] = round_to_presicion(cos(radians(180.)), 5);
 | 
				
			||||||
    slice[endIndex + 1] = round_to_presicion(sin(radians(180.)), 5);
 | 
					    slice[endIndex + 1] = round_to_presicion(sin(radians(180.)), 5);
 | 
				
			||||||
    slice[endIndex + 2] = 0;
 | 
					    slice[endIndex + 2] = 0;
 | 
				
			||||||
@@ -105,17 +118,15 @@ double *CoilSegment::calculateSlice() {
 | 
				
			|||||||
    return slice;
 | 
					    return slice;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CoilSegment::constructSegment(double *slice) {
 | 
					void CoilSegment::constructSegment(float *slice) {
 | 
				
			||||||
 | 
					    float degreesPerDay = 360.f / DAYS_IN_YEAR;
 | 
				
			||||||
    double degreesPerDay = 360.f / DAYS_IN_YEAR;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (uint32_t day = 0; day < DAYS_IN_YEAR; day ++) {
 | 
					    for (uint32_t day = 0; day < DAYS_IN_YEAR; day ++) {
 | 
				
			||||||
        float daysDegree = day * degreesPerDay;
 | 
					        float daysDegree = day * degreesPerDay;
 | 
				
			||||||
        // TODO: replace hardcoded value to coil->getWidth();
 | 
					 | 
				
			||||||
        vec3 daysPosition = vec3(
 | 
					        vec3 daysPosition = vec3(
 | 
				
			||||||
            cos(radians(daysDegree)) * 200,
 | 
					            cos(radians(daysDegree)) * coil->getRadius(),
 | 
				
			||||||
            10* daysDegree/360.,
 | 
					            10* daysDegree/360.,
 | 
				
			||||||
            sin(radians(daysDegree)) * 200
 | 
					            sin(radians(daysDegree)) * coil->getRadius()
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mat4 transform = mat4(1.);
 | 
					        mat4 transform = mat4(1.);
 | 
				
			||||||
@@ -150,14 +161,78 @@ void CoilSegment::constructSegment(double *slice) {
 | 
				
			|||||||
            vertices[currentPointOffset + 1] = point.y;
 | 
					            vertices[currentPointOffset + 1] = point.y;
 | 
				
			||||||
            vertices[currentPointOffset + 2] = point.z;
 | 
					            vertices[currentPointOffset + 2] = point.z;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            memcpy(
 | 
					            vertices[currentPointOffset + 3] = 0.5;
 | 
				
			||||||
                vertices + currentPointOffset + 3,
 | 
					            vertices[currentPointOffset + 4] = 0.5;
 | 
				
			||||||
                slice + slicePointOffset + 3,
 | 
					            vertices[currentPointOffset + 5] = 0.5;
 | 
				
			||||||
                3
 | 
					            
 | 
				
			||||||
            );
 | 
					            // memcpy(
 | 
				
			||||||
 | 
					            //     vertices + currentPointOffset + 3,
 | 
				
			||||||
 | 
					            //     slice + slicePointOffset + 3,
 | 
				
			||||||
 | 
					            //     3
 | 
				
			||||||
 | 
					            // );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					void CoilSegment::fillVBO() {
 | 
				
			||||||
 | 
					    // printVertices();
 | 
				
			||||||
 | 
					    glBufferData(GL_ARRAY_BUFFER, sizeof(float) * verticesLength, vertices, GL_STATIC_DRAW);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					uint64_t CoilSegment::fillEBO(uint64_t EBO) {
 | 
				
			||||||
 | 
					    uint64_t indicesLength = 6 * (sliceDetalization+2) * DAYS_IN_YEAR;
 | 
				
			||||||
 | 
					    uint64_t currentIndex = 0;
 | 
				
			||||||
 | 
					    uint64_t* indices = (uint64_t*) calloc(indicesLength, sizeof(uint64_t));
 | 
				
			||||||
 | 
					    for (uint64_t day = 0; day < DAYS_IN_YEAR; day ++) {
 | 
				
			||||||
 | 
					        for (uint64_t pointOfSlice = 0; pointOfSlice < (sliceDetalization+2); pointOfSlice ++) {
 | 
				
			||||||
 | 
					            // cout << currentIndex << endl;
 | 
				
			||||||
 | 
					            uint64_t dayOffset = day * (sliceDetalization+2);
 | 
				
			||||||
 | 
					            uint64_t offset = dayOffset + pointOfSlice;
 | 
				
			||||||
 | 
					            //First triangle
 | 
				
			||||||
 | 
					            indices[currentIndex] = offset;
 | 
				
			||||||
 | 
					            currentIndex ++;
 | 
				
			||||||
 | 
					            indices[currentIndex] = offset + (sliceDetalization+2);
 | 
				
			||||||
 | 
					            currentIndex ++;
 | 
				
			||||||
 | 
					            indices[currentIndex] = offset + 1;
 | 
				
			||||||
 | 
					            currentIndex++;
 | 
				
			||||||
 | 
					            //Second triangle
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if (pointOfSlice % (sliceDetalization+1) == 0 && pointOfSlice != 0) {
 | 
				
			||||||
 | 
					                indices[currentIndex] = offset - (sliceDetalization+2);
 | 
				
			||||||
 | 
					                currentIndex++;
 | 
				
			||||||
 | 
					                indices[currentIndex] = offset + 1;
 | 
				
			||||||
 | 
					                currentIndex++;
 | 
				
			||||||
 | 
					                indices[currentIndex] = offset;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                indices[currentIndex] = offset + 1;
 | 
				
			||||||
 | 
					                currentIndex++;
 | 
				
			||||||
 | 
					                indices[currentIndex] = offset + (sliceDetalization+3);
 | 
				
			||||||
 | 
					                currentIndex ++;
 | 
				
			||||||
 | 
					                indices[currentIndex] = offset + (sliceDetalization+2);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            currentIndex ++;            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // for (uint64_t i = 0; i < indicesLength; i ++) {
 | 
				
			||||||
 | 
					    //     cout << indices[i] << ",";
 | 
				
			||||||
 | 
					    // }
 | 
				
			||||||
 | 
					    // cout << endl;
 | 
				
			||||||
 | 
					    // cout << indicesLength << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (currentIndex != indicesLength) {
 | 
				
			||||||
 | 
					        cerr << "currentIndex == indicesLength assertion failed" << endl; 
 | 
				
			||||||
 | 
					        cerr << currentIndex << " " << indicesLength << endl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
 | 
				
			||||||
 | 
					    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned long) * indicesLength, indices, GL_STATIC_DRAW); 
 | 
				
			||||||
 | 
					    free(indices);
 | 
				
			||||||
 | 
					    return indicesLength;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// void testEBO(uint64_t *EBO, uint64_t length) {
 | 
				
			||||||
 | 
					//     for (uint64_t i = 0; i < length; i ++) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//     }
 | 
				
			||||||
 | 
					// }
 | 
				
			||||||
// Sample layout of 2 slices with 3 points.
 | 
					// Sample layout of 2 slices with 3 points.
 | 
				
			||||||
//  |x |y |z |r |g |b |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
 | 
					//  |x |y |z |r |g |b |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
 | 
				
			||||||
//  0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
 | 
					//  0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
 | 
				
			||||||
@@ -165,45 +240,48 @@ void CoilSegment::constructSegment(double *slice) {
 | 
				
			|||||||
//  |                  slice                              |             slice                                   |
 | 
					//  |                  slice                              |             slice                                   |
 | 
				
			||||||
//  
 | 
					//  
 | 
				
			||||||
void CoilSegment::calculate() {
 | 
					void CoilSegment::calculate() {
 | 
				
			||||||
    double *slice = calculateSlice();
 | 
					    float *slice = calculateSlice();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    constructSegment(slice);
 | 
					    constructSegment(slice);
 | 
				
			||||||
    exportSegmentToCsv();
 | 
					    exportSegmentToCsv();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
double *CoilSegment::getVertices() {
 | 
					float *CoilSegment::getVertices() { return vertices; }
 | 
				
			||||||
    return vertices;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint64_t CoilSegment::getVerticesLength() {
 | 
					uint64_t CoilSegment::getVerticesLength() { return verticesLength; }
 | 
				
			||||||
    return verticesLength;
 | 
					
 | 
				
			||||||
}
 | 
					uint16_t CoilSegment::getYear() { return year; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CoilSegment::render() {
 | 
					void CoilSegment::render() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					void CoilSegment::exportSliceToCSV(float *slice) {
 | 
				
			||||||
 | 
					    cout << "Exporting slice to csv" << endl;
 | 
				
			||||||
 | 
					    std::ofstream outFile("./slice_export.csv");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CoilSegment::exportSliceToCSV(double *slice) {
 | 
					    outFile << "x,y,z" << endl;
 | 
				
			||||||
    cout << "x,y,z" << endl;
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    for (uint32_t i = 0; i < sliceDetalization+2; i ++) {
 | 
					    for (uint32_t i = 0; i < sliceDetalization+2; i ++) {
 | 
				
			||||||
        uint32_t offset = FIELDS_IN_POINT * i;
 | 
					        uint32_t offset = FIELDS_IN_POINT * i;
 | 
				
			||||||
        cout
 | 
					        outFile
 | 
				
			||||||
                  << slice[offset + 0] << ","
 | 
					                  << slice[offset + 0] << ","
 | 
				
			||||||
                  << slice[offset + 1] << ",0" << endl;
 | 
					                  << slice[offset + 1] << ",0" << endl;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void CoilSegment::exportSegmentToCsv() {
 | 
					void CoilSegment::exportSegmentToCsv() {
 | 
				
			||||||
    cout << "x,y,z" << endl;
 | 
					    cout << "Exporting segment to csv" << endl;
 | 
				
			||||||
 | 
					    std::ofstream outFile("./segment_export.csv");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    outFile << "x,y,z" << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (uint16_t day = 0; day < DAYS_IN_YEAR; day ++) {
 | 
					    for (uint16_t day = 0; day < DAYS_IN_YEAR; day ++) {
 | 
				
			||||||
        uint64_t dayOffset = day * (2+sliceDetalization) * FIELDS_IN_POINT;
 | 
					        uint64_t dayOffset = day * (2+sliceDetalization) * FIELDS_IN_POINT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (uint32_t point_in_slice = 0; point_in_slice < (2+sliceDetalization); point_in_slice ++) {
 | 
					        for (uint32_t point_in_slice = 0; point_in_slice < (2+sliceDetalization); point_in_slice ++) {
 | 
				
			||||||
            uint32_t sliceOffset = point_in_slice * FIELDS_IN_POINT;
 | 
					            uint32_t sliceOffset = point_in_slice * FIELDS_IN_POINT;
 | 
				
			||||||
            cout << vertices[dayOffset +  sliceOffset + 0] << "," 
 | 
					            outFile << vertices[dayOffset +  sliceOffset + 0] << "," 
 | 
				
			||||||
                      << vertices[dayOffset +  sliceOffset + 1] << ","
 | 
					                      << vertices[dayOffset +  sliceOffset + 1] << ","
 | 
				
			||||||
                      << vertices[dayOffset +  sliceOffset + 2] << endl; 
 | 
					                      << vertices[dayOffset +  sliceOffset + 2] << endl; 
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,23 +13,26 @@ class CoilSegment {
 | 
				
			|||||||
    int shift;
 | 
					    int shift;
 | 
				
			||||||
    uint32_t sliceDetalization;
 | 
					    uint32_t sliceDetalization;
 | 
				
			||||||
    bool isLeap;
 | 
					    bool isLeap;
 | 
				
			||||||
    double *vertices;
 | 
					    float *vertices;
 | 
				
			||||||
    uint64_t verticesLength;
 | 
					    uint64_t verticesLength;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void init();
 | 
					    void init();
 | 
				
			||||||
    double* calculateSlice();
 | 
					    float* calculateSlice();
 | 
				
			||||||
    void constructSegment(double *slice);
 | 
					    void constructSegment(float *slice);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public:
 | 
					    public:
 | 
				
			||||||
    CoilSegment(Coil* coil, uint16_t year, uint16_t height, int shift, uint32_t sliceDetalization, bool isLeap);
 | 
					    CoilSegment(Coil* coil, uint16_t year, uint16_t height, int shift, uint32_t sliceDetalization, bool isLeap);
 | 
				
			||||||
    void calculate();
 | 
					    void calculate();
 | 
				
			||||||
    void printVertices();
 | 
					    void printVertices();
 | 
				
			||||||
    double *getVertices();
 | 
					    float *getVertices();
 | 
				
			||||||
    uint64_t getVerticesLength();
 | 
					    uint64_t getVerticesLength();
 | 
				
			||||||
    void printSlice(double *slice);
 | 
					    void printSlice(float *slice);
 | 
				
			||||||
    void exportSliceToCSV(double *slice);
 | 
					    void exportSliceToCSV(float *slice);
 | 
				
			||||||
    void exportSegmentToCsv();
 | 
					    void exportSegmentToCsv();
 | 
				
			||||||
    void render();
 | 
					    void render();
 | 
				
			||||||
 | 
					    void fillVBO();
 | 
				
			||||||
 | 
					    uint64_t fillEBO(uint64_t EBO);
 | 
				
			||||||
 | 
					    uint16_t getYear();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // COIL_SEGMENT_HPP
 | 
					#endif // COIL_SEGMENT_HPP
 | 
				
			||||||
							
								
								
									
										144
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										144
									
								
								src/main.cpp
									
									
									
									
									
								
							@@ -3,11 +3,23 @@
 | 
				
			|||||||
#include <cstring>
 | 
					#include <cstring>
 | 
				
			||||||
#include <cmath>
 | 
					#include <cmath>
 | 
				
			||||||
#include <cstdlib>
 | 
					#include <cstdlib>
 | 
				
			||||||
 | 
					#include <ctime>
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <glm/glm.hpp>
 | 
				
			||||||
 | 
					#include <glm/gtc/matrix_transform.hpp>
 | 
				
			||||||
 | 
					#include <glm/gtc/type_ptr.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "coil/coil.hpp"
 | 
					#include <coil/coil.hpp>
 | 
				
			||||||
#include "coil/segment.hpp"
 | 
					#include <coil/segment.hpp>
 | 
				
			||||||
 | 
					#include <utils/utils.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define RAND_0_1 ((double)rand()) / RAND_MAX
 | 
					using std::cerr;
 | 
				
			||||||
 | 
					using std::cout;
 | 
				
			||||||
 | 
					using std::endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define RAND_0_1 ((float)rand()) / RAND_MAX
 | 
				
			||||||
 | 
					#define DISPLAY_WIDTH 800
 | 
				
			||||||
 | 
					#define DISPLAY_HEIGHT 600
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void framebufferSizeCallback(GLFWwindow *window, int width, int height) {
 | 
					void framebufferSizeCallback(GLFWwindow *window, int width, int height) {
 | 
				
			||||||
    glViewport(10, 10, width-10, height-10);
 | 
					    glViewport(10, 10, width-10, height-10);
 | 
				
			||||||
@@ -19,28 +31,108 @@ void processInput(GLFWwindow *window) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void updateVertices(double (&vertices)[24]) {
 | 
					 | 
				
			||||||
	// if (RAND_0_1 < 0.99f) return; 
 | 
					 | 
				
			||||||
	double a[] = {
 | 
					 | 
				
			||||||
		-1.0f, 1.0f, 0.0f,  RAND_0_1, RAND_0_1, RAND_0_1,    // upper left
 | 
					 | 
				
			||||||
    	-1.0f, -1.0f, 0.0f,  RAND_0_1, RAND_0_1, RAND_0_1,   // bottom left
 | 
					 | 
				
			||||||
     	1.0f,  1.0f, 0.0f,  RAND_0_1, RAND_0_1, RAND_0_1,    // upper right
 | 
					 | 
				
			||||||
		1.0f, -1.0f, 0.0f,  RAND_0_1, RAND_0_1, RAND_0_1     // bottom right
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// vertices = a;
 | 
					 | 
				
			||||||
	memcpy(vertices, a, sizeof(a));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main () {
 | 
					int main () {
 | 
				
			||||||
	Coil c = Coil(2025, 1);
 | 
					
 | 
				
			||||||
 | 
						Coil c = Coil(2025, 1, 5,  50, 10);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						srand(time(0));
 | 
				
			||||||
 | 
						glfwInit();
 | 
				
			||||||
 | 
						glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 | 
				
			||||||
 | 
						glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
 | 
				
			||||||
 | 
						glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
 | 
				
			||||||
 | 
					#ifdef __APPLE__
 | 
				
			||||||
 | 
						glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						GLFWwindow *window = glfwCreateWindow(DISPLAY_WIDTH, DISPLAY_HEIGHT, "TimeCoil", NULL, NULL);
 | 
				
			||||||
 | 
						if (window == NULL) {
 | 
				
			||||||
 | 
							cerr << "Failed to create GLFW window." << endl;
 | 
				
			||||||
 | 
							gracefulExit(-1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						glfwMakeContextCurrent(window);
 | 
				
			||||||
 | 
						glfwSetFramebufferSizeCallback(window, framebufferSizeCallback);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
 | 
				
			||||||
 | 
							cerr << "Failed to initialize GLAD." << endl;
 | 
				
			||||||
 | 
							gracefulExit(-1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						uint64_t shaderProgram = prepareShaders();
 | 
				
			||||||
 | 
						glUseProgram(shaderProgram);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						glm::mat4 projection = glm::mat4(1.0f);
 | 
				
			||||||
 | 
						projection = glm::perspective(glm::radians(50.0f), (float)DISPLAY_WIDTH / (float)DISPLAY_HEIGHT, 0.001f, 2000.0f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						unsigned int projectionLoc  = glGetUniformLocation(shaderProgram, "projection");
 | 
				
			||||||
 | 
						glUniformMatrix4fv(projectionLoc, 1, GL_FALSE, glm::value_ptr(projection));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c.initGLBuffers();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// float vertices[] = {
 | 
				
			||||||
 | 
					    //     // positions          // texture coords
 | 
				
			||||||
 | 
					    //      05.5f,  0.5f, 0.0f,   1.0f, 1.0f, // top right
 | 
				
			||||||
 | 
					    //      0.5f, -0.5f, 0.0f,   1.0f, 0.0f, // bottom right
 | 
				
			||||||
 | 
					    //     -0.5f, -0.5f, 0.0f,   0.0f, 0.0f, // bottom left
 | 
				
			||||||
 | 
					    //     -0.5f,  0.5f, 0.0f,   0.0f, 1.0f  // top left 
 | 
				
			||||||
 | 
					    // };
 | 
				
			||||||
 | 
					    // unsigned int indices[] = {
 | 
				
			||||||
 | 
					    //     0, 1, 3, // first triangle
 | 
				
			||||||
 | 
					    //     1, 2, 3  // second triangle
 | 
				
			||||||
 | 
					    // };
 | 
				
			||||||
 | 
					    // unsigned int VBO, VAO, EBO;
 | 
				
			||||||
 | 
					    // glGenVertexArrays(1, &VAO);
 | 
				
			||||||
 | 
					    // glGenBuffers(1, &VBO);
 | 
				
			||||||
 | 
					    // glGenBuffers(1, &EBO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // glBindVertexArray(VAO);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // glBindBuffer(GL_ARRAY_BUFFER, VBO);
 | 
				
			||||||
 | 
					    // glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
 | 
				
			||||||
 | 
					    // glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // // position attribute
 | 
				
			||||||
 | 
					    // glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0);
 | 
				
			||||||
 | 
					    // glEnableVertexAttribArray(0);
 | 
				
			||||||
 | 
					    // // texture coord attribute
 | 
				
			||||||
 | 
					    // glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)(3 * sizeof(float)));
 | 
				
			||||||
 | 
					    // glEnableVertexAttribArray(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while(!glfwWindowShouldClose(window)) {
 | 
				
			||||||
 | 
							processInput(window);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
 | 
				
			||||||
 | 
							glClear(GL_COLOR_BUFFER_BIT);	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							glm::mat4 model = glm::mat4(1.0f);
 | 
				
			||||||
 | 
					        glm::mat4 view = glm::mat4(1.0f);
 | 
				
			||||||
 | 
					        model = glm::rotate(model, glm::radians(5.0f), glm::vec3(1.0f, 0.0f, 0.0f));
 | 
				
			||||||
 | 
					        view  = glm::translate(view, glm::vec3(0.0f, 0.0f, -89.0f));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							unsigned int modelLoc = glGetUniformLocation(shaderProgram, "model");
 | 
				
			||||||
 | 
					        unsigned int viewLoc  = glGetUniformLocation(shaderProgram, "view");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					        glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model));
 | 
				
			||||||
 | 
					        glUniformMatrix4fv(viewLoc, 1, GL_FALSE, glm::value_ptr(view));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							c.render();
 | 
				
			||||||
 | 
							// glBindVertexArray(VAO);
 | 
				
			||||||
 | 
					        // glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    glfwSwapBuffers(window);
 | 
				
			||||||
 | 
						    glfwPollEvents();		
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// CoilSegment cs = CoilSegment(10, 0, false);
 | 
						// CoilSegment cs = CoilSegment(10, 0, false);
 | 
				
			||||||
	for (auto segment : c.getSegments()) {
 | 
						// for (auto segment : c.getSegments()) {
 | 
				
			||||||
		// segment.printVertices();
 | 
						// 	// segment.printVertices();
 | 
				
			||||||
	}
 | 
						// }
 | 
				
			||||||
	// cs.printVertices();
 | 
						// cs.printVertices();
 | 
				
			||||||
	return 0;
 | 
						gracefulExit(0);
 | 
				
			||||||
// 	srand(time(0));
 | 
					// 	srand(time(0));
 | 
				
			||||||
// 	glfwInit();
 | 
					// 	glfwInit();
 | 
				
			||||||
// 	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 | 
					// 	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 | 
				
			||||||
@@ -66,10 +158,10 @@ int main () {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// 	unsigned int shaderProgram = prepareShaders();
 | 
					// 	unsigned int shaderProgram = prepareShaders();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 	double *vertices = cs.getVertices();
 | 
					// 	float *vertices = cs.getVertices();
 | 
				
			||||||
// 	unsigned int amountOfVerticies = cs.getVerticesLength();
 | 
					// 	unsigned int amountOfVerticies = cs.getVerticesLength();
 | 
				
			||||||
// 	std::cout << amountOfVerticies << std::endl;
 | 
					// 	std::cout << amountOfVerticies << std::endl;
 | 
				
			||||||
// 	// double vertices[] = {
 | 
					// 	// float vertices[] = {
 | 
				
			||||||
// 	// 	-1.0f, -1.0f, 0.0f,  1.0f, 0.0f, 0.0f,    // upper left
 | 
					// 	// 	-1.0f, -1.0f, 0.0f,  1.0f, 0.0f, 0.0f,    // upper left
 | 
				
			||||||
//     // 	-0.5f, -0.5f, 0.0f,  0.0f, 1.0f, 0.0f,   // bottom left
 | 
					//     // 	-0.5f, -0.5f, 0.0f,  0.0f, 1.0f, 0.0f,   // bottom left
 | 
				
			||||||
//     //  	0.5f,  0.5f, 0.0f,  1.0f, 0.0f, 0.0f,    // upper right
 | 
					//     //  	0.5f,  0.5f, 0.0f,  1.0f, 0.0f, 0.0f,    // upper right
 | 
				
			||||||
@@ -92,10 +184,10 @@ int main () {
 | 
				
			|||||||
// 	glBufferData(GL_ARRAY_BUFFER, amountOfVerticies, vertices, GL_STATIC_DRAW);
 | 
					// 	glBufferData(GL_ARRAY_BUFFER, amountOfVerticies, vertices, GL_STATIC_DRAW);
 | 
				
			||||||
// 	// glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
 | 
					// 	// glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 	glVertexAttribPointer(0, 3, GL_DOUBLE, GL_FALSE, 6 * sizeof(double), (void*)0);
 | 
					// 	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);
 | 
				
			||||||
// 	glEnableVertexAttribArray(0);
 | 
					// 	glEnableVertexAttribArray(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 	glVertexAttribPointer(1, 3, GL_DOUBLE, GL_FALSE, 6 * sizeof(double), (void*) (3 * sizeof(double)));
 | 
					// 	glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*) (3 * sizeof(float)));
 | 
				
			||||||
// 	glEnableVertexAttribArray(1);
 | 
					// 	glEnableVertexAttribArray(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 	glBindVertexArray(0);
 | 
					// 	glBindVertexArray(0);
 | 
				
			||||||
@@ -108,8 +200,8 @@ int main () {
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
// 		glUseProgram(shaderProgram);
 | 
					// 		glUseProgram(shaderProgram);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 		// double time = glfwGetTime();
 | 
					// 		// float time = glfwGetTime();
 | 
				
			||||||
// 		// double greenValue = sin(time);
 | 
					// 		// float greenValue = sin(time);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 		// int vertexColorLocation = glGetUniformLocation(shaderProgram, "MyColor");
 | 
					// 		// int vertexColorLocation = glGetUniformLocation(shaderProgram, "MyColor");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@
 | 
				
			|||||||
#include <fstream>
 | 
					#include <fstream>
 | 
				
			||||||
#include <iostream>
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
double round_to_presicion( double value, int precision ) {
 | 
					float round_to_presicion( float value, int precision ) {
 | 
				
			||||||
    const int adjustment = pow(10,precision);
 | 
					    const int adjustment = pow(10,precision);
 | 
				
			||||||
    return floor( value*(adjustment) + 0.5 )/adjustment;
 | 
					    return floor( value*(adjustment) + 0.5 )/adjustment;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -32,7 +32,7 @@ void gracefulExit(int code) {
 | 
				
			|||||||
	exit(code);
 | 
						exit(code);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unsigned int prepareShaders() {
 | 
					uint64_t prepareShaders() {
 | 
				
			||||||
	unsigned int vertexShader = glCreateShader(GL_VERTEX_SHADER);
 | 
						unsigned int vertexShader = glCreateShader(GL_VERTEX_SHADER);
 | 
				
			||||||
	unsigned int fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
 | 
						unsigned int fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,10 +3,10 @@
 | 
				
			|||||||
#include <cmath>
 | 
					#include <cmath>
 | 
				
			||||||
#include <string>
 | 
					#include <string>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
double round_to_presicion( double value, int precision );
 | 
					float round_to_presicion( float value, int precision );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
std::string readFile(std::string path);
 | 
					std::string readFile(std::string path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void gracefulExit(int code);
 | 
					void gracefulExit(int code);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
unsigned int prepareShaders();
 | 
					uint64_t prepareShaders();
 | 
				
			||||||
		Reference in New Issue
	
	Block a user