小编jsf*_*jsf的帖子

了解NetworkStream.EndRead() - 来自MSDN的示例

我试图了解NetworkStream.EndRead()的MSDN示例.有些部分我不明白.

所以这是示例(从MSDN复制):

// Example of EndRead, DataAvailable and BeginRead.

public static void myReadCallBack(IAsyncResult ar ){

    NetworkStream myNetworkStream = (NetworkStream)ar.AsyncState;
    byte[] myReadBuffer = new byte[1024];
    String myCompleteMessage = "";
    int numberOfBytesRead;

    numberOfBytesRead = myNetworkStream.EndRead(ar);
    myCompleteMessage = 
        String.Concat(myCompleteMessage, Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));    

    // message received may be larger than buffer size so loop through until you have it all.
    while(myNetworkStream.DataAvailable){

        myNetworkStream.BeginRead(myReadBuffer, 0, myReadBuffer.Length, 
                                               new AsyncCallback(NetworkStream_ASync_Send_Receive.myReadCallBack), 
                                                   myNetworkStream);  

    }

    // Print out the received message to the console.
    Console.WriteLine("You received the following message …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous networkstream tcpclient

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

向四元数添加euler角度

我想为现有的四元数添加一个euler角度.这是我得到的:

Quaternion oldTransform = transform.Rotation;

float YawRotation = mouseDiff.x *  RotationSpeed;
Quaternion YawRotationQuaternion = new Quaternion();
YawRotationQuaternion.CreateFromAxisAngle (0, 1, 0, YawRotation);

float PitchRotation = mouseDiff.y * RotationSpeed;
Quaternion PitchRotationQuaternion = new Quaternion();
PitchRotationQuaternion.CreateFromAxisAngle ( 1, 0, 0, PitchRotation);

Quaternion result = oldTransform * YawRotationQuaternion * PitchRotationQuaternion;
transform.Rotation = result;
Run Code Online (Sandbox Code Playgroud)

我想只有偏航和俯仰旋转.旧变换具有此属性.我添加的我的欧拉角也只是俯仰和偏航旋转.当我乘以它时会发生的事情是oldTransform描述的旋转引入了滚动旋转.

然后我试过:

Quaternion result = YawRotationQuaternion * oldTransform * PitchRotationQuaternion;
Run Code Online (Sandbox Code Playgroud)

这不会引入滚动旋转.当oldTransform将偏航轴旋转到俯仰轴上时,此选项更加糟糕,因为它具有万向节锁定.

现在我能想象的是,从旧的变形获得旧的偏航和俯仰旋转,并修改偏航和俯仰轴,使它们不再是(0,1,0)和(1,0,0).这里的问题是,当我从四元数中提取欧拉角时,我也会得到万向节锁.

那么如何将特定轴的euler角度添加到四元数?

c# math quaternions euler-angles

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

TypeScript:指定要查找模块类型定义的目录

Heyho,

我想在我的打字稿代码中使用一些javascript库,在npm中没有任何打字.所以我自己编写了这些打字并将它们放在definitions源代码树的目录中.但是,我无法获取typescript来查看那些模块的目录.

我的目录结构如下所示:

+-node_modules
| |
| +-moduleA
| |
| +-moduleB
|
+-src
| |
| +-definitions
| | |
| | +-moduleA.d.ts
| | |
| | +-moduleB.d.ts
| |
| +-ts
|   |
|   + ... all typescript code ...
|
+-tsconfig.json
Run Code Online (Sandbox Code Playgroud)

我尝试在definitions-directory中使用包含模块

  • include
  • files
  • typeRoots
  • paths

然而,它都没有奏效.

有人可以告诉我,如何获得打字稿以包括那些打字?

PS:为什么TypeScript模块处理如此复杂?

import module typescript type-definition

8
推荐指数
2
解决办法
6350
查看次数

如何让 TypeScript 编译器不发出目录结构

在我当前的 TypeScript 项目中,我有以下文件结构:

\n\n
project\n\xe2\x94\x9c\xe2\x94\x80app\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80index.html\n\xe2\x94\x9c\xe2\x94\x80test\n\xe2\x94\x94\xe2\x94\x80src\n  \xe2\x94\x9c\xe2\x94\x80app\n  \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80tsconfig.json\n  \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80app.ts\n  \xe2\x94\x9c\xe2\x94\x80lib\n  \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80lib.ts\n  \xe2\x94\x94\xe2\x94\x80test\n    \xe2\x94\x9c\xe2\x94\x80tsconfig.json\n    \xe2\x94\x94\xe2\x94\x80test.ts\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想要实现的是,在编译该项目时,app生成test的文件结构如下所示:

\n\n
project\n\xe2\x94\x9c\xe2\x94\x80app\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80index.html\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80app.js\n\xe2\x94\x9c\xe2\x94\x80test\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80lib\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80lib.js\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80test.js\n\xe2\x94\x94\xe2\x94\x80src\n  \xe2\x94\x94\xe2\x94\x80...\n
Run Code Online (Sandbox Code Playgroud)\n\n

或这个:

\n\n
project\n\xe2\x94\x9c\xe2\x94\x80app\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80index.html\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80app.js\n\xe2\x94\x9c\xe2\x94\x80test\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80lib.js\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80test.js\n\xe2\x94\x94\xe2\x94\x80src\n  \xe2\x94\x94\xe2\x94\x80...\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有一个位于 lib 目录中的库。它由 app.ts 使用,然后在网页上使用。测试位于测试目录中。我实际得到的是:

\n\n
project\n\xe2\x94\x9c\xe2\x94\x80app\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80index.html\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80app.js\n\xe2\x94\x9c\xe2\x94\x80test\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80lib\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80lib.js\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80test\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80test.js\n\xe2\x94\x94\xe2\x94\x80src\n  \xe2\x94\x94\xe2\x94\x80...\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意额外的test- 目录。

\n\n

-文件src/test/tsconfig.json如下所示:

\n\n
{\n    "compileOnSave": true,\n    "compilerOptions": {\n        "target": "es2016",\n        "lib": [\n            "dom",\n            "es2016"\n        ],\n        "outDir": …
Run Code Online (Sandbox Code Playgroud)

unit-testing build node.js typescript tsc

5
推荐指数
0
解决办法
1291
查看次数

Typescript:如何为npm模块使用本地类型声明文件

在我的TypeScript代码中,我想要包含一个没有打字的NPM JavaScript模块.

import createPersist = require('vuex-localstorage');
Run Code Online (Sandbox Code Playgroud)

因此编译器抱怨:

error TS7016: Could not find a declaration file for module 'vuex-localstorage'. '<path>\node_modules\vuex-localstorage\dist\index.js' implicitly has an 'any' type.
Run Code Online (Sandbox Code Playgroud)

一种可能解决这一被设置"noImplicitAny"falsetsconfig.json.但这是我不想要的.我想知道什么不是typechecked了.

所以我写了一个最小类型声明vuex-localstorage,我把它放在我的项目目录中:

interface PersistOptions {
    namespace?: string;
    initialState?: any;
    provider?: any;
    serialize?: (data:any) => string;
    deserialize?: (str:string) => any;
    expires?: number;
    merge?: (args:any[]) => any;
    reducer?: (state:any, paths:string[]) => any;
    paths?: string[];
}

declare function createPersist(options: PersistOptions): any;

export = createPersist;
Run Code Online (Sandbox Code Playgroud)

但是我仍然有同样的错误.我尝试了几件事来让TypeScript编译器识别我的类型声明文件,但没有任何效果.

那我该怎么做?

import typescript vuex typescript-typings vuejs2

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

在溢出时显示工具提示:隐藏

我想在具有自定义滚动功能的相当复杂的编辑器中在项目旁边显示工具提示。工具提示应该“转义”已overflow: hidden设置为限制视口的容器。

这是一个显示问题的示例:

.container {
  border: 1px black solid;
  width: 200px;
  height: 200px;
  overflow: hidden;
}

.inner {
  display: flex;
  flex-direction: column;
}

.row {
  display: flex;
}

.column {
  background-color: #99FF99;
  padding: 25px;
}

.tooltip-container {
  position: relative;
}

.content {
  background-color: #9999FF;
  width: 50px;
  height: 50px;
}

.tooltip {
  z-index: 1;
  background-color: #FF9999;
  display: none;
  position: absolute;
  left: 100%;
  top: 0%;
  white-space: nowrap;
}

.tooltip-container:hover .tooltip {
  display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="inner" id="inner" style="margin-left: …
Run Code Online (Sandbox Code Playgroud)

css overflow tooltip

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

OpenGL:基本向量如何在内存中布局

这个话题已经讨论过很多次了。网上有很多关于OpenGL中矩阵内存布局的信息。可悲的是,不同的来源经常相互矛盾。

我的问题归结为:

当我有我的矩阵的三个基向量bx,bybz. 如果我想用它们制作一个矩阵以将它们插入着色器,它们在内存中的布局如何?

让我们澄清一下我所说的基向量是什么意思,因为我怀疑这也可能意味着不同的东西:

当我有一个 3D 模型时,它是 Z-up 并且我想将它沿 X 轴平放在我的世界空间中,然后bz[1 0 0]. 即[0 0 2]模型空间中的顶点将被转换为[2 0 0]当该顶点乘以我的矩阵时,该矩阵bz作为 Z 轴的基向量。

来到 OpenGL 矩阵内存布局:

根据 GLSL 规范(GLSL Spec p.110)它说:

vec3 v, u;
mat3 m;
u = v * m;

is equivalent to

u.x = dot(v, m[0]); // m[0] is the left column of m
u.y = dot(v, m[1]); // dot(a,b) is the inner …
Run Code Online (Sandbox Code Playgroud)

opengl matrix

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