Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Вычисление матриц? https://www.cyberforum.ru/ cpp/ thread1205147.html
1. Составить алгоритм программы для вычисления матриц 2. Написать программу на языке С + + для вычисления матриц
Microsoft Visual C++ C++
Объясните, пожалуйста, что значит эта ошибка: error MSB4062: Невозможно загрузить задачу "MIBPreProcessDependencyGraph" из сборки "Microsoft.Build.CppTasks.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Проверьте правильность объявления <UsingTask>, доступность сборки со всеми ее зависимостями и наличие в задаче общего класса, реализующего...
C++ Шифратор Дешифратор Ребят, нужна очень программа которая будет шифровать и дешифровать информацию, слова например. Метод не важен, можно Цезаря например Ключ так же, закрытый или открытый неважно Буду очень признателен, до диплома осталась неделя, а без такой проги мне капут :( https://www.cyberforum.ru/ cpp/ thread1204590.html C++ Переименовать окно приложения Добрый день. Хочу сделать, чтобы в том случае, если приложение было открыто несколько раз, то их названия писались по разному: 1е окно - "App", 2 окно - "App", 3 окно "App" и т.д. Пытаюсь делать следующим образом: HWND window_op; window_op = FindWindow(NULL, L"App"); https://www.cyberforum.ru/ cpp/ thread1204448.html
Нужно доработать программу, что бы считала кол-во спичек. Текст задания ниже C++
Разработать программную модель следующей игры двух игроков(пользователь-компьютер),реализовав выигрышную стратегию для компьютера:На стол выкладываются 50 спичек.Каждый игрок по очереди вынимает спички из кучи,по меньшей мере,1 и не более 6.Кто берет последнюю спичку,тот выигрывает. #include<iostream.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> void main() { int a,b,k,p,m;...
C++ Логическое высказывание https://www.cyberforum.ru/ cpp/ thread1203587.html
если дано логическое выражение, в котором все сокращается, какой будет ответ? Выполнимо, общезначимо, невыполнимо...
C++ Разбить подсчет арифметической прогрессии на несколько потоков #include <windows.h> #include <iostream> using namespace std; CRITICAL_SECTION cs; int e; int sh; int col; int mas; https://www.cyberforum.ru/ cpp/ thread1203204.html На печать выдать слова, имеющие больше одной буквы «е» C++
Дана строка. На печать выдать слова, имеющие больше одной буквы «е». С++ Помогите пожалуйста. Добавлено через 3 минуты help! Добавлено через 6 минут help
C++ Написать функцию удаления элемента https://www.cyberforum.ru/ cpp/ thread1202663.html
Не работает функция удаления элемента Помогите написать ее #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <iostream> #include <string.h> #include <stdlib.h>
C++ переделать программу ,пожалуйста https://www.cyberforum.ru/ cpp/ thread1202503.html
#include <iostream>//cout,cin #include <chrono>//сверхточные часы #include <random>//rand() //функция для вывода массива void show(int *arr, int N) { for (int i = 0; i < N; i++) { std::cout <<arr <<'\t';//вывод элемента
не могу написать функцию удаления C++
мой код нужно сделать функцию удаления не пойму как это сделать #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <iostream> #include <string.h>
C++ Rack Extensions Development https://www.cyberforum.ru/ cpp/ thread1202161.html
Всем программерам привет! Ищю DSP программиста для разработки плагинов для PH Reason 7! Вот как выглядят плагины в магазине: https://shop.propellerheads.se/browse/?product_type=rack-extensions-refills&sub_type=rack-extensions Плагины защищены by CodeMeter т.е. их не крякнуть, что даёт нам большое приемущество!
3 / 3 / 1
Регистрация: 28.12.2011
Сообщений: 253
0

Как переделать код для р8я частиц - C++ - Ответ 6305624

11.06.2014, 19:20. Показов 773. Ответов 1
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Надо чтобы они имели скоростя одинаковы но соответсвенно их цвету--то есть как их поделить хотя бы на трир цвета с разными скоростями


#include <stdio.h>
#include <cstdlib>
#include <time.h>
#include <math.h>
#include <iostream>
#include "windows.h"
#include <gl\glut.h>

/*Ekran*/
#define WIDTH 400
#define HEIGHT 400

/*Zagalni*/
#define GLOBAL 0.3
#define PERSONAL 0.3
#define INERT 0.3
#define DELAY 100

/*Riy*/
#define N 60 //NUmber of agents
#define K 200 //Number of moves

/* Obmezhennya */
#define Xmin -4
#define Xmax 6
#define Ymin -4
#define Ymax 6

double velocity[N][2];
double swarm[N][2];
double BestPers[N][3];
double BestGlob[3];


float Lrand(float min, float max)
{
return (min + ((rand() % 10000) / 1e4) * (max - min));
}

void init() //Generate initial positions and directions
{
srand(time(NULL));
glClearColor(1, 1, 1, 0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(Xmin, Xmax, Ymin, Ymax);
for(int i = 0; i < N; i++)
{
swarm[i][0] = Lrand(Xmin, Xmax);
swarm[i][1] = Lrand(Ymin, Ymax);
velocity[i][0] = Lrand(-1, 1);
velocity[i][1] = Lrand(-1, 1);
BestPers[i][2] = 100000;
}
BestGlob[2] = 100000;
}

void MoveWasp() //Moves the whole wasp
{
for(int i = 0; i < N; i++)
{
for(int a = 0; a < 2; a++)
{
velocity[i][a] = INERT * velocity[i][a] +
Lrand(-1, 1) * GLOBAL * (BestGlob[a] - swarm[i][a]) +
Lrand(-1, 1) * PERSONAL * (BestPers[i][a] - swarm[i][a]);
swarm[i][a] = swarm[i][a] + velocity[i][a];
}
}
}

int chkBrd(int i) //Verifies agent's position
{
if((Xmin <= swarm[i][0]) && (swarm[i][0] <= Xmax) && (Ymin <= swarm[i][1]) && (swarm[i][1] <= Ymax))
return 1;
else
return 0;
}

double calculate(int i)
{
double f;
double a = swarm[i][0], b = swarm[i][1];
f = - 0.1 * fabs(1 - b) - 0.1 * fabs(1 - a) - j0(20 * a * a + b * b);
// f = - 0.1 * fabs(1 - b) - 0.1 * fabs(1 - a) - j0(a * a + b * b);
// f = a * sin(4 * a) + 1.1 * b * sin(2 * b);
return f;
}

void checkBP(int i, double a)
{
if(a < BestPers[i][2])
{
BestPers[i][2] = a;
BestPers[i][1] = swarm[i][1];
BestPers[i][0] = swarm[i][0];
}
}

void checkBG(int i, double a)
{
if(a < BestGlob[2])
{
BestGlob[2] = a;
BestGlob[1] = swarm[i][1];
BestGlob[0] = swarm[i][0];
}
}

void draw(void)
{
glColor3f(1, 1, 0);
glBegin(GL_POINTS);
for(int i = 0; i < N; i++)
glVertex2dv(swarm[i]);
glVertex2d(BestGlob[0], BestGlob[1]);
glEnd();
glFlush();
glutSwapBuffers();
}

void display(int i)
{
std::cout << i << "\t" << BestGlob[0] << "\t" << BestGlob[1] << "\t" << BestGlob[2] << "\n";
}

void go()
{
double a;
for(int k = 0; k < K; k++)
{
for(int i = 0; i < N; i++)
{
if(chkBrd(i))
{
a = calculate(i);
checkBP(i, a);
checkBG(i, a);
}
}
display(k);
draw();
MoveWasp();
glClear(GL_COLOR_BUFFER_BIT);
Sleep(DELAY);
}
return;
}

int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition(600,220);
glutInitWindowSize(WIDTH, HEIGHT);
glutCreateWindow("Рій Комах");
glPointSize(2.0);
glEnable(GL_POINT_SMOOTH);
init();
glutDisplayFunc(go);
glutIdleFunc(go);
glutMainLoop();
}

Добавлено через 22 минуты
Первоначальный код -- но там надо GLSL, а я на глуте работаю и не знаю все таки как там переделывать
point4 в vec4. Как там определить position[j] (0..3);
typedef point4 vec4;
typedefstructparticle
{
int color;
point4 position;
vec4 velocity;
float mass;
}particle;

intnum_particles;
for(inti=0;i<num_particles;i++)
{
particles[i].mass=1.0;
particles[i].color=i%NUM_COLORS;
for(intj=0;j<3;j++)
{
particles[i].position[j]=2.0*((float)rand()/RAND_MAX)-1.0;
particles[i].velocity[j]=speed*2.0*((float)
rand()/RAND_MAX)-1.0;
}
p articles[i].position[3]=1.0;
particles[i].velocity[3]=0.0;
}

voiddisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
for(i=0;i<num_particles;i++)
{
point_colors[i+24]=colors[particles[i].color];
points[i+24]=particles[i].position;
}
glBindBuffer(GL_ARRAY_BUFFER,buffers[0]);
glBufferData(GL_ARRAY_BUFFER,sizeof(points),+sizeof(colors)NULL,
GL_DYNAMIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER,0,sizeofpoints,points);
glBufferSubData(GL_ARRAY_BUFFER,sizeof(points),sizeof(colors),colors);
glDrawArrays(GL_POINTS,24,num_particles);
glutSwapBuffers();
}

float last_time,present_time;
voididle(void)
{
inti,j;
floatdt;
present_time=glutGet(GLUT_ELAPSED_TIME);/*inmilliseconds*/
dt=0.001*(present_time-last_time);/*inseconds*/
for(i=0;i<num_particles;i++)
{
for(j=0;j<3;j++)
{
p articles[i].position[j]+=dt*particles[i].velocity[j];
particles[i].velocity[j]+=dt*forces(i,j)/particles[i].mass;
}

collision(i);
}
last_time=present_time;
glutPostRedisplay();
}

floatcoef;/*coefficientofrestitution*/
voidcollision(intn)
{
inti;
for(i=0;i<3;i++)
{
if(particles[n].position[i]>=1.0)
{
particles[n].velocity[i]=-coef*particles[n].velocity[i];
particles[n].position[i]=1.0-coef*
(particles[n].position[i]-1.0);
}
if(particles[n].position[i]<=-1.0)
{
particles[n].velocity[i]=-coef*particles[n].velocity[i];
particles[n].position[i]=-1.0-coef*
(particles[n].position[i]+1.0);
}
}
}



bool gravity=TRUE;
floatforces(inti,intj)
{
if(!gravity)return(0.0);
elseif(j==1)return(-1.0);
elsereturn(0.0);
}

Добавлено через 3 минуты
Извиняюсь предыдущий код был первоначальным для следуещего:
#include <GL/gl.h>
#include <GL/glut.h>
#include <windows.h>
#include <stdio.h>
#include <math.h>
#define MAX_NUM_PARTICLES 100
typedef struct particle
{
int colorr;
int colorg;
int colorb;
float positionx;
float positiony;
float positionz;
float velocityx;
float velocityy;
float velocityz;
float mass;
} particle;

particle particles[MAX_NUM_PARTICLES];

int speed=2.0;
int num_particles=60;

void init () {
for(int i=0; i<num_particles; i++)
{
particles[i].mass = 1.0;
particles[i].positionx = 2.0*((float) rand()/RAND_MAX)-1.0;
particles[i].positiony = 2.0*((float) rand()/RAND_MAX)-1.0;
particles[i].positionz = 2.0*((float) rand()/RAND_MAX)-1.0;
if (i<num_particles/3) {
particles[i].velocityx = speed*1.0*((float)
rand()/RAND_MAX)-1.0;
particles[i].velocityy = speed*1.0*((float)
rand()/RAND_MAX)-1.0;
particles[i].velocityz = speed*1.0*((float)
rand()/RAND_MAX)-1.0;
particles[i].colorr =255;
particles[i].colorr =255;
particles[i].colorr =0;
}

else if ((num_particles/3=<i) && (i<2*num_particles/3)) {
particles[i].velocityx = speed*2.0*((float)
rand()/RAND_MAX)-1.0;
particles[i].velocityy = speed*2.0*((float)
rand()/RAND_MAX)-1.0;
particles[i].velocityz = speed*2.0*((float)
rand()/RAND_MAX)-1.0;
particles[i].colorr =255;
particles[i].colorr =0;
particles[i].colorr =0;
}

else {
particles[i].velocityx = speed*2.0*((float)
rand()/RAND_MAX)-1.0;
particles[i].velocityy = speed*2.0*((float)
rand()/RAND_MAX)-1.0;
particles[i].velocityz = speed*2.0*((float)
rand()/RAND_MAX)-1.0;
particles[i].colorr =255;
particles[i].colorr =0;
particles[i].colorr =255;
};
}
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
for(int i=0; i<num_particles; i++)
{
point_colors[i+24] [3] = colors[particles[i].color];
points[i+24] [3] = particles[i].positionx;
}
glBindBuffer(GL_ARRAY_BUFFER, buffers[0]);
glBufferData(GL_ARRAY_BUFFER, sizeof(points), +sizeof(colors)NULL,
GL_DYNAMIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(points),points);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(points), sizeof(colors),colors);
glDrawArrays(GL_POINTS, 24, num_particles);
glutSwapBuffers();
}

float last_time, present_time;

void idle(void)
{
int i, j;
float dt;
present_time = glutGet(GLUT_ELAPSED_TIME); /* in milliseconds */
dt = 0.001*(present_time - last_time); /* in seconds */
for(i=0; i<num_particles; i++)
{
particles[i].positionx+=dt*particles[i].velocityx;
particles[i].velocityx+=dt*forces(i,1)/particles[i].mass;
particles[i].positiony+=dt*particles[i].velocityy;
particles[i].velocityy+=dt*forces(i,2)/particles[i].mass;
particles[i].positionz+=dt*particles[i].velocityz;
particles[i].velocityz+=dt*forces(i,3)/particles[i].mass;
}
collision(i);
}
last_time = present_time;
glutPostRedisplay();
}

float coef=1; /* coefficient of restitution */
void collision(int n)
{
if(particles[n].positionx>=1.0)
{
particles[n].velocityx = -coef*particles[n].velocityx;
particles[n].positionx = 1.0-coef*
(particles[n].positionx-1.0);
}
if(particles[n].positionx<=-1.0)
{
particles[n].velocityx = -coef*particles[n].velocityx;
particles[n].positionx= -1.0-coef*
(particles[n].positionx+1.0);
}

if(particles[n].positiony>=1.0)
{
particles[n].velocityy = -coef*particles[n].velocityy;
particles[n].positiony = 1.0-coef*
(particles[n].positiony-1.0);
}
if(particles[n].positiony<=-1.0)
{
particles[n].velocityy = -coef*particles[n].velocityy;
particles[n].positiony= -1.0-coef*
(particles[n].positiony+1.0);
}

if(particles[n].positionz>=1.0)
{
particles[n].velocityz = -coef*particles[n].velocityz;
particles[n].positionz= 1.0-coef*
(particles[n].positionz-1.0);
}
if(particles[n].positionz<=-1.0)
{
particles[n].velocityz = -coef*particles[n].velocityz;
particles[n].positionz= -1.0-coef*
(particles[n].positionz+1.0);
}

}

bool gravity = TRUE;
float forces(int i, int j)
{
if(!gravity) return(0.0);
else if(j==1) return(-1.0);
else return(0.0);
}

int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition(600,220);
glutInitWindowSize(WIDTH, HEIGHT);
glutCreateWindow("Рій Комах");
glPointSize(2.0);
glEnable(GL_POINT_SMOOTH);
init();
glutDisplayFunc(display);
glutIdleFunc(display);
glutMainLoop();
}

Вернуться к обсуждению:
Как переделать код для р8я частиц C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2014, 19:20
Готовые ответы и решения:

Код написан в Dev C. Не работает в Visual. Как нужно переделать код?
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт...

Переделать код для unordered_set
Здравствуйте! У меня просьба к более опытным программистам данного форума. Можно ли как-то...

Как переделать код для ACCESS?
Option Compare Database Private Sub Кнопка2_Click() Dim i&amp; Set icell = ActiveCell For i = 3 To...

Как переделать комовский код для .exe
Есть вот код для проги .com. Как его переделать, чтобы можно было скомпилить в тасме в .exe?...

1
11.06.2014, 19:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2014, 19:20
Помогаю со студенческими работами здесь

Как переделать код чтобы он работал для .xlsx файлов
Есть код, который извлекает информацию из .xls файлов с помощью ExcelExtractor : package main;...

Как переделать код для экспорта данных в Excel под OpenOffice Calc?
Пишу дипломную. Есть код для копирования из таблицы String Grid в программу Microsoft Excel (то...

Переделать код для сортировки массива на код для сортировки двумерной матрицы
возникла проблема, не могу переделать код для сортировки массива на код для сортировки двумерной...

Переделать код для Qt
Здравствуйте, уважаемые форумчане. Меня попросили помочь написать несложную программу на С++, но...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru