小编Miz*_*zor的帖子

如何找到定义贝塞尔曲线的数学函数

我试图实现贝塞尔曲线和线段交叉测试.我搜索到的最接近的事情是采用贝塞尔曲线(为简单起见,将其限制为三个控制点)找到生成该曲线的数学函数并将其放在原点上.然后,使用线段的函数作为另一个函数,让它们相等并求解方程.

许多消息来源陈述上述解决方案(除非我误解了它们),我的问题是我无法找到计算生成贝塞尔曲线的数学函数的方法.

哦,请指出我是否完全偏离找到交叉点.

language-agnostic math bezier

4
推荐指数
1
解决办法
5934
查看次数

android中的MapActivity类?

当我扩展MapActivity类时,它显示错误.

错误是:无法解析数据类型.为什么?

如何在我的项目中添加maps.jar?

谢谢.

android android-emulator

4
推荐指数
1
解决办法
1万
查看次数

2D坐标归一化

我需要实现一个规范化坐标的函数.我将normalize定义为(如果我错了,请建议一个更好的术语):

将数据集的条目从其自然范围映射到0到1之间的值.

现在这在一个方面很容易:

    static List<float> Normalize(float[] nums)
    {
        float max = Max(nums);
        float min = Min(nums);
        float delta = max - min;

        List<float> li = new List<float>();
        foreach (float i in nums)
        {
            li.Add((i - min) / delta);
        }
        return li;
    }
Run Code Online (Sandbox Code Playgroud)

我也需要一个2D版本,并且必须保持宽高比不变.但我有一些麻烦搞清楚数学.

虽然发布的代码在C#中,但答案不一定是.

提前致谢.:)

language-agnostic algorithm math coordinate-transformation

4
推荐指数
2
解决办法
7056
查看次数

捕获c ++基础异常

在我的项目中,我们有一个基本的例外.用于处理显示错误对话框,日志等.我正在寻找一种方法来处理该异常的所有派生类,我认为这样可行:

try
{
  main_loop();
}
catch (const MyExceptionBase* e)
{
  handle_error(e);
}
Run Code Online (Sandbox Code Playgroud)

抛出的每个子实例都可以由指向其父级的指针表示.但是,不,当现在抛出异常时,它是一个未处理的异常.

为什么是这样?c ++只将异常作为引用抛出吗?从而使我的捕获块无用?但那么为什么这甚至首先编译?

我能想到的另一种方式是:

try
{
  main_loop();
}
catch (const ExceptionA& e)
{
  handle_error(e);
}
catch (const ExceptionB& e)
{
  handle_error(e);
}
catch (const ExceptionC& e)
{
  handle_error(e);
}
Run Code Online (Sandbox Code Playgroud)

这看起来有点难看.这样做的正确方法是什么?没有基本的异常类?或者它能以我想要的方式解决吗?

Ps:handle_error()简单地使用基类函数display_message_box()并干净地关闭程序是什么.

c++ exception try-catch

3
推荐指数
2
解决办法
7171
查看次数

Python中的2D矢量投影

下面的代码将蓝色矢量AC投影到红色矢量AB上,得到的投影矢量AD被绘制为紫色.这是我自己实现的Wolfram演示.

然而有些事情是错的,我可以真正弄清楚是什么.应该是投影公式本身是错误的,或者我错误地将一些局部坐标与世界坐标错误.任何帮助表示赞赏.

假设你有pygame,这个代码被修剪但仍然可以没有问题地执行:

import pygame
from pygame.locals import *

def vadd(a,b):
    return (a[0]+b[0],a[1]+b[1])

def vsub(a,b):
    return (a[0]-b[0],a[1]-b[1])

def project(a, b):
    """ project a onto b
        formula: b(dot(a,b)/(|b|^2))
    """
    abdot = (a[0]*b[0])+(a[1]*b[1])
    blensq = (b[0]*b[0])+(b[1]*b[1])

    temp = float(abdot)/float(blensq)
    c = (b[0]*temp,b[1]*temp)

    print a,b,abdot,blensq,temp,c
    return c

pygame.init()
screen = pygame.display.set_mode((150, 150))
running = True

A = (75.0,75.0)
B = (100.0,50.0)
C = (90,70)

AB = vsub(B,A)
AC = vsub(C,A)

D = project(AC,AB)
AD = vsub(D,A)

while running:
    for event in …
Run Code Online (Sandbox Code Playgroud)

python math 2d projection

3
推荐指数
1
解决办法
5021
查看次数

帮帮我lambda-nize这个

为了帮助我更好地理解lambda,我编写了这个简短的片段,它可以旋转并转换四边形(我希望我的数学正确).现在,我想用一个衬里lambdas替换下面的三个步骤,可能与map()一起使用.

我使用矢量类,但希望功能很明确,他们做了什么.

self.orientation = vector(1,0)
self.orientation.rotate(90.0)

#the four corners of a quad
points = (vector(-1,-1),vector(1,-1),vector(1,1),vector(-1,1))
print points

#apply rotation to points according to orientation
rot_points = []
for i in points:
    rot_points.append(i.rotated(self.orientation.get_angle()))
print rot_points

#transform the point according to world position and scale
real_points = []
for i in rot_points:
    real_points.append(self.pos+i*self.scale)
print real_points

return real_points
Run Code Online (Sandbox Code Playgroud)

python lambda

3
推荐指数
1
解决办法
215
查看次数

内存访问冲突.这个看似简单的程序出了什么问题?

这是一个快速的程序,我刚刚写了,看看我是否记得如何从头开始一个c ++程序.它只是反转一个字符串(就地),看起来一般对我来说是正确的.为什么这不起作用?

#include <iostream>
using namespace std;

void strReverse(char *original)
{
    char temp;
    int i;
    int j;
    for (i = 0, j = strlen(original) - 1; i < j; i++, j--)
    {
        temp = original[i];
        original[i] = original[j];
        original[j] = temp;
    }
}

void main()
{
    char *someString = "Hi there, I'm bad at this.";
    strReverse(someString);

}
Run Code Online (Sandbox Code Playgroud)

c

3
推荐指数
2
解决办法
919
查看次数

使用控制台writeline c#

我需要输出d使用相同的值Console.WriteLine.但我只得到结果而不是d输出值.我以什么方式实现这一目标?

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int a;
            int b;
            Console.WriteLine("Please Enter the first Digit");
            a = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Please Enter the Second Digit");
            b = Convert.ToInt32(Console.ReadLine());
            int d = a + b;
            Console.WriteLine("Result",(d));

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

3
推荐指数
1
解决办法
236
查看次数

构造函数的虚函数调用

也许我错了,但这似乎是一个非常基本的问题.突然间,我的继承链停止了工作.编写一个小的基本测试应用程序证明我错了(所以我不能责怪编译器).

我有一个基类,在虚函数中具有默认行为.子类派生自那个并改变行为.

#include <iostream>

class Base
{
public:
    Base() { print(); }
    ~Base() {}

protected:
    virtual void print() { std::cout << "base\n"; }
};

class Child : public Base
{
public:
    Child() {}
    ~Child() {}

protected:
    virtual void print() { std::cout << "child\n"; }
};

int main()
{
    Base b;
    Child c;
}
Run Code Online (Sandbox Code Playgroud)

这打印:

base
base
Run Code Online (Sandbox Code Playgroud)

创建Child实例时,为什么调用Base :: print()?我认为通过使用virtual关键字,可以替换派生类的函数.

在什么时候我让自己感到困惑?

c++ inheritance constructor overriding virtual-functions

2
推荐指数
1
解决办法
966
查看次数

WPF StaticResource 绑定到子属性

我有一个作为资源创建的类:

<Window.Resources>
    <Model:MyModel x:Key="model" />
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

该类MyModel有一个名为 的 cli 属性Foo。我希望将组合框中的选定值绑定到此属性。我以为我可以做到这一点,但我收到错误:

<ComboBox SelectedItem="{Binding Source={StaticResource model.Foo}}" />
Run Code Online (Sandbox Code Playgroud)

错误如下:

Cannot find resource named '{model.Foo}'.
Run Code Online (Sandbox Code Playgroud)

我哪里做错了?我需要指定哪些额外参数才能正确绑定到子属性?

wpf

2
推荐指数
1
解决办法
1590
查看次数