我有以下SVG源代码,生成许多带文本的框:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20050904/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="600">
<defs>
</defs>
<title>Draw</title>
<g transform="translate(50,40)">
<rect width="80" height="30" x="0" y="-20" style="stroke: black; stroke-opacity: 1; stroke-width: 1; fill: #9dc2de" />
<text text-anchor="middle" x="40">Text</text>
</g>
<g transform="translate(150,40)">
<rect width="80" height="30" x="0" y="-20" style="stroke: black; stroke-opacity: 1; stroke-width: 1; fill: #9dc2de" />
<text text-anchor="middle" x="40">Text 2</text>
</g>
<g transform="translate(250,40)">
<rect width="80" height="30" x="0" y="-20" style="stroke: black; stroke-opacity: 1; stroke-width: 1; fill: #9dc2de" />
<text text-anchor="middle" x="40">Text …
Run Code Online (Sandbox Code Playgroud) 我想填充一个带有运行整数的表列,所以我想使用ROWNUM.但是,我需要根据其他列的顺序填充它,例如ORDER BY column1, column2
.遗憾的是,由于Oracle不接受以下声明,因此不可能:
UPDATE table_a SET sequence_column = rownum ORDER BY column1, column2;
Run Code Online (Sandbox Code Playgroud)
也不是以下语句(尝试使用WITH子句):
WITH tmp AS (SELECT * FROM table_a ORDER BY column1, column2)
UPDATE tmp SET sequence_column = rownum;
Run Code Online (Sandbox Code Playgroud)
那么如何使用SQL语句并且不依赖于PL/SQL中的游标迭代方法呢?
我有两个点A和B在设备屏幕上定义一个线段加上另一个点C.使用易于编码的高效和短算法(最好使用标准数学库),如何检查线段AB是否在与C的距离R?
我知道有一种简单的方法可以找到从点到线的最短距离,但它假设线条无限长.我所拥有的是具有两个端点的线段.
我考虑在Math SE中发布这个但是决定不这样做,因为我不想把所有这些长数学公式作为答案,如https://math.stackexchange.com/questions/2837/how-to-tell-if -a-line-segment-with-a-circle.我需要的是一个高效可读的计算机算法,而不是一个正式的数学定理.
p/s:我有以下需要实现的Objective-C方法框架:
typedef struct {
CGPoint a;
CGPoint b;
} CGLineSegment;
+ (BOOL)isLineSegment:(CGLineSegment)line withinRadius:(CGFloat)radius fromPoint:(CGPoint)point {
}
Run Code Online (Sandbox Code Playgroud)
编辑解决方案:
感谢veredesmarald的回答(我已经接受了)我已经实现了这个方法,在这里作为其他人的参考:
+ (BOOL)isLineSegment:(CGLineSegment)line withinRadius:(CGFloat)radius fromPoint:(CGPoint)point {
CGPoint v = CGPointMake(line.b.x - line.a.x, line.b.y - line.a.y);
CGPoint w = CGPointMake(point.x - line.a.x, point.y - line.a.y);
CGFloat c1 = dotProduct(w, v);
CGFloat c2 = dotProduct(v, v);
CGFloat d;
if (c1 <= 0) {
d = distance(point, line.a);
}
else if (c2 <= c1) {
d = distance(point, line.b); …
Run Code Online (Sandbox Code Playgroud) 我正在做一个游戏,玩家用手指拖着船.我正在将Box2D用于游戏的物理方面.特别是,我正在使用b2MouseJoint
将触摸事件附加到船上以让触摸事件拖动船.
但有一个问题是,船在被拖动时的移动方式是不现实的; 它可以简单地在任何方向拖动,在现实世界中,船只只能沿着它的长度移动,并且会有防水性,这使得难以改变船只运动的方向.因此,我需要一种模拟防水性的方法,以使船只运动逼真.
可以在Box2D中模拟它吗?线性阻尼和角度阻尼简单地使船难以移动,但我只是希望船在一个方向上易于移动而且它应该只能抵抗改变方向.
PS我不认为我需要发布我的代码来解决这个问题,但是如果你想查看代码摘录,请告诉我.
我遇到了涉及静态方法的Cocoa Touch/iOS的奇怪行为.如果在任何类中实现静态方法'load',Cocoa Touch/iOS将在应用程序开始执行时自动调用该方法.即使你没有从主执行线程中引用那个类,它仍然会被调用,无论如何.
我已经设法在Xcode 3.2.5上的SDK 4.2和Xcode 4.0.1上的SDK 4.3上编译时以及从iPhone模拟器和iPhone设备上运行时复制行为.
这是复制的方法:
创建一个新类并根据需要为其命名.在接口中声明一个静态方法'load'(任何返回类型):
+ (void)load;
Run Code Online (Sandbox Code Playgroud)
然后实现它:
+ (void)load {
NSLog(@"What the?");
}
Run Code Online (Sandbox Code Playgroud)
编译(确保新类编译)并运行应用程序(在模拟器或设备上).应用程序启动时,切换到并监视GDB视图.你会看到"什么?" 虽然按逻辑没有其他代码引用类或方法,但在那里回显.
最重要的是,如果您在方法中使用任何自动释放代码,您将收到一个错误,表明该方法甚至在int main()
方法之前被调用(存在的所有C应用程序的超级网关).
以下代码:
+ (void)load {
NSLog(@"Hello %@", [NSString stringWithString:@"World"]);
}
Run Code Online (Sandbox Code Playgroud)
会给你一些看起来像的东西:
2011-04-21 00:41:53.828 AppName[548:707] *** __NSAutoreleaseNoPool(): Object 0x8fe8c of class NSCFString autoreleased with no pool in place - just leaking
2011-04-21 00:41:53.838 AppName[548:707] Hello World
Run Code Online (Sandbox Code Playgroud)
所以问题是,有人知道为什么Cocoa Touch/iOS会调用这种方法吗?方法名称'load'有什么特别之处?最后但并非最不重要的是,这是一个功能还是一个错误?
p/s:我发现这种行为时,我实现的静态方法'load'实例化了许多自动释放的对象,我被__NSAutoreleaseNoPool()
GDB中的多个警告消息困惑.
algorithm ×1
box2d ×1
box2d-iphone ×1
cocoa-touch ×1
geometry ×1
ios4 ×1
objective-c ×1
oracle ×1
rownum ×1
sql ×1
sql-update ×1
svg ×1