我想检测圆形和矩形之间的碰撞,但不知道如何.
我知道如何使用毕达哥拉斯定理检测圆与圆之间的碰撞,这是:
(x2 - x1)^ 2 +(y2 - y1)^ 2 - (r2 + r1),但检测碰撞的算法是什么
在C或C++编程语言中的圆形和矩形之间.
我试图存储一些每次都会改变的元素,但我不知道哪个
方式更好,为什么.我正在考虑两种方式,1)声明int和loop或者数组
使用矢量.
哪种方式更好,为什么?
声明int的数组是否有任何未来的memore问题作为泄漏?
下面的代码显示了我正在谈论的两种方式:
1)
#include <iostream>
#include <vector>
int main()
{
int x[5];
x[0] = 10;
x[1] = 20;
x[2] = 30;
x[3] = 40;
x[4] = 50;
for(unsigned int i = 0;i<=sizeof(x[5]); i++)
{
std:: cout << "x[" << i << "] = "<< x[i] << std::endl;
}
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
2)
#include <iostream>
#include <vector>
int main()
{
std::vector<int> x;
x.push_back(10);
x.push_back(20);
x.push_back(30);
x.push_back(40);
x.push_back(50);
for(unsigned int i = 0;i<=x.size()-1; i++)
{
std:: cout …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个可以格式化我的文本输出的c ++函数,如下所示:
#0 id:80
#1 id:80
#2 id:80
#3 id:80
等等...
并在函数中有一个名为max的参数来限制输出量,例如:
如果max参数设置为10,则大多数打印/输出仅10次:
#0 id:80
#1 id:80
#2 id:80
#3 id:80
#4 id:80
#5 id:80
#6 id:80
#7 id:80
#8 id:80
#9 id:80
#10 id:80
我试图做的是下面的代码,但它不能按我的意愿工作:
void format_text(int max){
char Buffer[100];
static int amount;
for (int x = 0; x <= max; x++){
amount ++;
if (max > amount){
length += sprintf(Buffer+length,"#%d id: %d\n", amount, 80);
printf("%s", Buffer);
}
Run Code Online (Sandbox Code Playgroud)
请帮我制作一个我为你描述的功能
我有一个记分板,可以随时获得更新信息,缓冲区大小=我的记分板可以处理的行数,但我试图使其无限制地无限.
我想要做的是as-sign无穷大值到这样的缓冲区:
const int infinity = std::numeric_limits<const int>::infinity();
char Buffer_format_text [infinity];
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为它说:
错误C2057:预期的常量表达式错误C2466:无法分配常量大小为0的数组
有没有办法做到这一点?还是骗术?, 请帮我.不要问我为什么要这样做,我问怎么做.
更新:
这是我用sprintf做的,你怎么在ostringstream?
char Buff[100];
int length = 0;
int amount_of_space = 8;
length += sprintf(Buff+length,"%-*s %s\n", amount_of_space, "Test", "Hello");
Run Code Online (Sandbox Code Playgroud)
this output: Test Hello
Run Code Online (Sandbox Code Playgroud)