小编Dav*_*ave的帖子

获得点和原点之间的角度

这可能以前已经回答过,如果有的话,对不起.我基本上需要从原点到点获得角度.那么让我们说Origin是(0,0)而我的目标点是(3,0).

3点= 90度

6点钟= 180度

9点= 270度

12点钟= 0度


不知何故,我要做一些数学魔法,并发现角度为90度(Top为0). 原点可能会有所不同,所以我需要一个带有两个参数的方法,Origin和TargetPoint,它们以度为单位返回双倍角度.

是的,我意识到这看起来简短而且没有建设性,但我让这个问题尽可能简单易懂.所有其他问题都被关闭了 - .-

谢谢

c# directx xna angle

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

为什么速记访问器功能比常规访问器更快?

我进行了一项测试,测量下面两个访问器功能之间的速度差异,并且时间差异大于我的预期.我只是觉得速记实现可能会快一点,所以我想测试一下.

我测量了所需的总秒数,为每个类调用Get函数,进行10亿次迭代.

using System;
using System.Diagnostics;

class SimpleGet {
    int value;

    public int Get() {
        return value;
    }
}

class ShorthandGet {
    int value;

    public int Get() => value;
}

class Program {
    static void Main() {
        const int Iterations = 1000000000;
        Stopwatch sw = new Stopwatch();

        sw.Start();
        {
            int n; SimpleGet sg = new SimpleGet();
            for (int i = 0; i < Iterations; i++) {
                n = sg.Get();
            }
        }
        sw.Stop();
        Console.WriteLine("SimpleGet: " + sw.Elapsed.TotalSeconds);

        sw.Reset();

        sw.Start();
        {
            int …
Run Code Online (Sandbox Code Playgroud)

c# clr

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

如何修改解析语法以允许赋值和非赋值语句?

所以问题是关于下面的语法。我正在研究一种小型解释语言(我们在课堂上学习了一些编译器设计,所以我想将其提升到一个新的水平并自己尝试一些东西)。我一直在尝试制作非终结符Expr

Statement ::= Expr SC
Expr ::=           /* I need help here */
Assign ::= Name EQUAL Expr
AddSub ::= MulDiv {(+|-) AddSub}
MulDiv ::= Primary {(*|/) MulDiv}
Primary ::= INT | FLOAT | STR | LP Expr RP | Name
Name ::= ID {. Name}
Run Code Online (Sandbox Code Playgroud)

Expr必须考虑Statement到以下两种情况:

  1. x = 789;(常规赋值,后跟分号)
  2. x+2;(没有赋值,只是计算,丢弃;后面跟一个分号)

第二个案例的目的是为未来更多的改变奠定基础。我正在考虑一元递增和递减运算符,以及函数调用;两者都不要求分配有意义。

我看过其他语法(即 C#),但它太复杂且冗长,难以理解。当然,我不是在寻找解决方案,而只是寻求如何修改语法的指导。

感谢所有帮助。

编辑:我应该说我最初的想法是Expr ::= Assign | AddSub,但这行不通,因为它会产生歧义,因为两者都可以以非终结符 开头Name。我已经制作了我的标记生成器,使其允许一个标记向前看(查看),但我没有为非终端制作这样的东西,因为它将尝试解决一个可以避免的问题(歧义)。在语法中,终结符是全部大写的。

grammar context-free-grammar

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

代码应该重写还是应该使用方法?

首先,我找不到这个问题,所以我决定在这里发帖.

在游戏开发过程中,我意识到我在游戏领域拥有的实体越多,fps下降的越多,这是预期的.

为了优化它,我在某处阅读(我会发布链接,如果我能找到它),如果你重写代码而不是使用通用方法,它会更快,因为它不必每次都"链接"方法运行代码.但是,由于我正在重写代码,它可能会占用更多的虚拟空间.

我只想知道你对此的看法,如果你认为这是真的.我很乐意接受任何其他优化策略或链接.

编辑: 选择答案后,问题"过于宽泛"有什么意义?如果答案被选中,则意味着有一个有效的答案,这意味着问题不是太广泛,否则答案者会遇到问题......

谢谢

c# performance

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

为什么我的阵列被翻转?

            public const T = true;
            public static bool[,] MassMediumHorizontal = new bool[,]
            { 
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T},
            {T,T,T,T,T,T}
            };
Run Code Online (Sandbox Code Playgroud)

大家都知道,这个数组的宽度为6,高度为12.

当我编译它时,宽度和高度被翻转.

如果我在调试时放置一个断点(visual studio功能),然后将鼠标悬停在变量的名称上,它会告诉我数组的大小,它表示12x6(宽x高).


当然,如果我想得到相反的结果,那么我只需要将原始数组设为12x6并在编译后以6x12结束.

但为什么这首先发生呢?(编译后我不会旋转它)

c# arrays rotation flip

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

标签 统计

c# ×4

angle ×1

arrays ×1

clr ×1

context-free-grammar ×1

directx ×1

flip ×1

grammar ×1

performance ×1

rotation ×1

xna ×1