自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(180)
  • 收藏
  • 关注

原创 Python代码用多种方式实现识别文本风格和作者数量(SVM,LogicRegression)

运行文件(‘D:/Final/Others/main.py’,args=‘-i test-o result1’,wdir='D:/Final/Others)类似地,如果想要获得svc结果,那么将LogisticRegression.pickle更改为svc.pickle,那么它就可以工作了。首先,打开generate_text_features.py,直接运行生成一个名为features的文件夹。其次,打开task1.py并直接运行以生成一个名为saved_models的文件夹。注意:运行时记得改变路线。

2023-10-09 20:06:06 398 1

原创 基于BERT模型进行文本处理(Python)

这些信息可以从JSON文件中获得,但在这种情况下,我们使用前面在数据中提到的CSV文件中第二列的更改。该模型是在标记的数据集上使用损失函数进行训练的,该函数测量预测作者和真实作者之间的差异。训练后,使用单独的数据集对模型进行验证,以评估其准确性,并进行任何必要的调整以提高其性能。当有四个以上的作者时,检测所有作者是很困难的,当只有一个段落是由另一个作者写的时,识别格式也是很有挑战性的。这是因为,要确定一份文档是单作者还是多作者,需要了解文档的结构和内容,并分析整个文本中使用的写作风格。

2023-10-08 09:00:00 744

原创 AI 大框架基于python来实现基带处理之TensorFlow(信道估计和预测模型,信号解调和解码模型)

在回归问题中,均方误差可以用来评估模型的性能,其中较小的均方误差表示模型的预测与真实值更接近。对于具有n个可能取值的离散变量,one-hot编码将其表示为长度为n的二进制向量,只有对应取值的位置上为1,其他位置上为0。解码的目标是将这些符号、样本或编码数据映射回原始的数字数据,以还原最初的信息。Sequential模型是TensorFlow中的一种模型,它允许我们按照顺序将不同的层组合在一起,构建一个多层的神经网络。具体来说,我们可以将接收到的信号数据作为模型的输入,将已知的信道状态或特性作为模型的输出。

2023-10-06 19:31:16 1203

原创 AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率)

它是一个元组(x_val, y_val),其中x_val是用于验证模型性能的输入数据,y_val是对应的标签数据。它是一个形状为(n_samples, n_features)的NumPy数组,其中n_samples表示训练样本的数量,n_features表示每个样本的特征数量。模型将预测的概率最大的类别作为最终的分类结果。例如,对于一个具有3个类别的分类问题,输出层使用了softmax激活函数后,输出的向量可以表示为 [0.2, 0.5, 0.3],其中每个元素的值表示对应类别的概率。

2023-10-06 16:34:58 956 2

原创 练习:缺陷Defects/感染Infections/失败Failure

因此,缺陷被执行并且感染不会发生——当 (1) x 为空(零长度)或 (2) y 在 x 中,但 y 不是 x 的第一个元素时。(a) 当条件 x[i] % 2 == 1 对于负数计算结果为 false 时,感染发生,因为根据方法的规范,正确的条件应该计算为 true。(a) 在该方法中,x[i] % 2 应该是 Math.abs(x[i] % 2),因为单独条件“x[i] % 2 == 1”不会包括要计算的负数 作为奇数(因为负奇数的 x[i] % 2 是 -1)。(a) 是,当 y 不在 x 中时。

2023-06-08 09:00:00 524

原创 练习:测试最小化和优先化

此外,b3 仅被测试用例 t1 覆盖,而 t1 也覆盖了 b7,因此一旦添加了 t1,算法就会停止。给定六个测试用例的排序,我们可以查看前 n 个测试用例提供的覆盖率,其中 1 ≤ n ≤ 6。首先选择 t5,因为它比其他的有更多的测试用例(5 个测试用例)。首先选择 t5,因为它比其他的有更多的测试用例(5 个测试用例)。• t5 的执行会覆盖以下分支:b2、b5、b8、b9、b10。• t3 的执行会覆盖以下分支:b1、b4、b8、b10。• t1 的执行会覆盖以下分支:b1、b3、b7。

2023-06-07 18:10:12 671

原创 输入域分析问题与解答

在输入域分析的背景下,基于接口的输入域建模可以包括确定系统与超市系统之间的接口,例如购物车接口、价格计算接口、订单接口等。但是,如果顾客选择送货上门,那么如果他们居住在距离超市 3 公里以内的地方,他们将被收取 3 英镑的费用,否则将被收取 7 英镑的费用。c) 通过将基于功能的输入域建模应用于问题开头的示例,我们可以根据问题描述识别不同的功能和规则,并设计相应的测试输入。这些测试输入是根据问题。解释:通过考虑购买折扣商品数量的边界情况,我们可以验证系统在不同数量折扣商品的情况下是否正确计算成本和总成本。

2023-06-07 13:00:00 116

原创 练习:有限状态机测试

两者都有输入字母 X = {a, b} 和输出字母 Y = {0,1}。2.对于 Mi 的每个状态 s,找到一个使 Mi 从其初始状态到状态 s 的输入序列。在每种情况下,确定这是否是最短的此类输入序列。4.评论这是否是最短的过渡游。如果不是,则生成最短的过渡行程。从状态 s0 输出序列为 1。从状态 s1 输出序列为 1。从状态 s2 输出序列为 1。从状态 s3 输出序列为 0。从状态 s0 输出序列为 0。从状态 s1 输出序列为 0。从状态 s2 输出序列为 0。从状态 s3 输出序列为 1。

2023-06-07 11:00:00 1062

原创 练习:程序切片

由于直接影响“x”值的唯一语句是“x = x + y”,因此它是前向切片中包含的唯一语句。循环中的其他语句,例如“y”的递减,不直接影响“x”的值,因此在这个特定上下文中不是前向切片的一部分。在这里我们可以观察到,当我们到达 if 语句时,我们有 y=3,因此我们采用了“then”的情况。但是,我们现在可以从中删除第一条语句,因为它不会影响 x 的最终值(此处分配的值将被下一条语句分配的值覆盖)。程序的正向切片是指在程序的特定点直接或间接影响特定变量值的语句和变量的集合。删除片段的每个部分。

2023-06-07 10:45:00 429

原创 程序切片问题与解答

通过给出上面给出的代码片段关于变量 z 的最小动态结束切片来说明你的答案,假设输入有 1 分配给 x,7 分配给 y,2 分配给 z。在 y 的初始值至少为 2 的条件下,通过给出上面给出的关于变量 y 的代码片段的最小条件结束切片来说明你的答案。程序 p 的一个(静态的,向后的)程序切片 s 是根据切片标准 (V , n) 构建,其中 V 是一组变量名,n 是程序点。程序 p 的一个(静态的,向后的)程序切片 s 是根据切片标准 (V , n) 构建,其中 V 是一组变量名,n 是程序点。

2023-06-05 10:00:00 548

原创 区分序列/UIO/特征集示例

让我们假设我们有一个状态集 S 的 FSM M。还假设我们知道通过转换 t 达到的当前状态是 s 或 s0。我们如何确定 t 到达了哪个状态?分离状态输入序列 w 将两个状态 s 和 s0 分开,如果: 对 w 的响应在 s 和 s0 中不同。

2023-06-04 10:15:00 724

原创 if/while/for/语句/分支/路径覆盖的控制流程图+数据流分析(DU)

• Branch Coverage 更有可能发生这种情况: 不可行的分支指向代码中的冗余决策。并非所有通过 CFG 的路径在实际代码中都是合法可行的。某些版本的路径覆盖专注于每个循环的 0、1 或更多次执行,以减少可能无限数量的路径!• 这也可能发生在声明覆盖范围内: 不可行的语句指向死代码。• 结构覆盖级别是了解测试套件执行了多少代码的有用指标。通过 countZeros 的路径数取决于 x 的长度。测试套件应执行 CFG 的所有真/假边缘。测试套件应执行通过 CFG 的所有路径。

2023-06-03 13:30:00 1252

原创 找到 FSM 的区别序列、UIO 或特征集(W方法)

许多系统都是基于状态的:它们有一个更新的内部状态通过操作并影响行为。在测试这样一个系统时,一个需要考虑状态。这导致了一系列的语言,用于描述基于状态的规范和模型,这些可以在许多应用领域。比如嵌入式的开发汽车和航空电子工业中的控制系统通常使用以状态图形式编写的基于状态的模型。如果我们有一个基于状态的模型,那么就有可能利用这在测试中。例如,我们可以考虑覆盖率的简单概念(例如执行转换的比例),此外,如果我们可以提供一个具有形式语义的模型,然后我们可以以此为基础用于自动化部分测试。

2023-06-03 10:00:00 493

原创 有限状态机器测试(过渡游览法)

在此示例中,“错误”状态表示仅当存在与硬币接受或机器故障等问题相关的状态转换时才会发生的故障情况。引入附加状态来处理状态转换期间发生的故障情况的概念可以应用于需要错误处理的各种系统和场景。在这种情况下,我们可以引入一个称为“Error”的附加状态来表示仅在存在状态转换时才会发生的故障情况。FSM M 的两个状态 s 和 s0 被输入分开序列 x 如果:M 对 x 的响应在状态 s 是不同的和 s0 (λ^(4)最小化minimal。我们将看到第二个问题的解决方案(发现状态转移错误)帮助我们找到额外的状态。

2023-06-02 15:00:00 344

原创 基于状态的系统和有限状态机FSM

基于模型进行测试。模型可能是规格或描述感兴趣的属性。该模型通常是一个抽象概念,应该相对容易理解。测试补充了白盒方法。测试通常是黑盒:不考虑实际系统的结构。如果模型具有形式语义,则可实现的主要好处:我们就有了自动化的潜力。大部分工作使用基于状态的语言 state-based languages。

2023-06-02 10:30:00 417

原创 向后切片,正向切片和其他形式的切片

生成的切片提供了原始程序的一个子集,该子集捕获与切片标准相关的依赖关系和行为,有助于各种软件工程任务,例如调试、程序理解和代码优化。通过删除不影响切片标准的语句,生成的动态切片变得更小,并且更专注于直接有助于观察到的行为的程序的基本部分。当我们说某些语句不影响动态(向后)切片中特定输入的切片标准时,这意味着从程序中删除或删除这些语句不会改变导致满足切片标准的计算或行为或 为该输入触发。在程序切片中,切片标准指的是计算切片的特定程序点或感兴趣的变量。这是由 n 和分配给 n 的变量形成的标准的前向切片。

2023-06-01 17:02:49 1855

原创 生成程序片段(程序依赖图PDG)

语句 3 对语句 1 的依赖性是因为变量 x 的值在语句 3 中被修改 (x = x - 1),并且该修改后的值被用于语句 1 中 while 循环的条件表达式中 (while (x > 0)). 语句 3 中 x 的更新会影响语句 1 中的循环条件。语句 3 中 x 的更新值 (x = x - 1) 用于计算语句 2 中的 y (y = y + x)。注意:如果它们在循环中,定义清晰的路径可能从一个顶点到一个“较早”的顶点。语句3和语句1之间存在依赖关系,语句3和语句2之间也存在依赖关系。

2023-06-01 10:45:00 1699

原创 程序切片(定义+用途)

介绍让我们假设我们测试了一个程序 p 并失败了(错误的输出)。然后我们想找出导致失败(故障)的原因。现在假设我们要更改程序的一部分。我们可能会问:程序的哪些其他部分受到影响我们想找到导致失败的原因(什么是错误)?我们想确定程序的哪些部分可以是受变化影响?这两个问题都与依赖有关。它是一类程序简化技术。我们将看到几个品种。在每个我们有:我们必须保留程序行为(语义)的某些元素。一些我们可以简化程序的方法。调试:一种策略Tactic。

2023-06-01 10:30:00 1370

原创 回归测试:优先级(Coverage 的适应度函数)

在确定优先级时,我们的目标是为测试用例找到一个好的顺序。理想情况下,我们希望尽早发生任何故障。这可以加快整体开发过程,例如:有时,一旦发现失败,我们就会停止测试。即使我们计划执行所有测试用例,我们越早发现失败,我们就可以越早开始尝试修复代码。问题:我们事先不知道哪些测试用例会导致失败。因此,我们无法在测试前知道“最佳”顺序。相反,我们使用相关的指标和历史信息有缺陷:我们优先考虑被认为更有可能导致失败的测试。我们还致力于快速扩大覆盖范围。

2023-06-01 10:15:00 543

原创 回归测试最小化(贪心算法,帕累托支配)

有时我们不能只是重新运行我们的测试(例如,当我们换界面)。回归测试可能很昂贵:(1)一些公司通宵运行回归测试套件。(2) 对于嵌入式系统,我们可能必须测试正在使用的软件,例如 汽车或飞机, 这可能需要几个月的时间。(3) 自动驾驶汽车的回归测试?模拟测试有帮助,但不是完整的解决方案。有兴趣找到选择回归测试套件子集的好方法。类似的问题出现在持续集成中。我们可能会选择只运行一些测试用例:我们最小化测试套件。通常基于标准我们可以对测试用例进行排序(优先排序):

2023-06-01 10:00:00 1452

原创 生成突变体(实际问题)

参数的值,我们可以有选择地激活或停用变异,从而允许我们比较原始代码和变异代码在不同条件下的行为。经典的覆盖标准是用于通过测量代码在测试期间被执行的程度来评估测试用例的充分性的指标。重要的是要注意,等效突变体的概念取决于程序行为的定义和用于确定正确性的 oracle。在突变测试中,等效突变体是原始代码的突变版本,其行为方式与所有可能输入的原始代码相同。它识别可能影响循环优化和并行化的依赖关系。(5) 然后:如果我们产生所有这样的突变体并且我们的测试将它们全部杀死,我们的测试必须提供 100% 的语句覆盖率。

2023-05-31 18:57:22 982

原创 基于计算器编写一个 JUnit 测试套件

当使用 Reader 和 Writer 构造时,calculate 方法读取两个数字和一个运算符 – +(加)、-(减)、*(倍)或 /(除)之一,并写入结果。读取和写入的来源取决于 Reader 和 Writer 接口的实现方式。也就是说,getGreatestFootballTeams() 方法将在第一次调用时返回“Everton”,然后在第二次调用时返回“Sheffield United”。您可以使用 JaCoCo 检查覆盖率,您用它来完成最后一组练习。您可以手动或使用 Mockito 执行此操作。

2023-05-30 19:59:59 574

原创 覆盖标准(白盒、黑盒和灰盒)

遗漏缺陷可能是由于不完整或不准确的规范、不充分的实施或开发过程中的疏忽造成的。换句话说,它指的是软件包含不应该存在的东西或行为不正确的情况。测试套件的覆盖级别表示已覆盖的测试需求的百分比,提供对测试过程的彻底性的评估。这两种类型的缺陷、错误和遗漏都是不受欢迎的,它们会影响软件的质量和可靠性。使用抽象表示的目的是简化软件的复杂性,并为定义测试需求和识别可测试特性提供结构化框架。语句覆盖并不是一种“决定要测试什么”的有用方法,而是一种发现测试套件未涵盖的内容并决定是否需要更多测试用例的方法。

2023-05-30 19:33:33 1354

原创 大型测试(系统测试)和它的问题(片状测试)

如果系统通过了冒烟测试,则表明它足够稳定,可以进行更全面的测试,例如功能测试、回归测试或性能测试。为了检查我们的代码与其他代码的行为——或者我们的代码需要使用的外部服务,集成测试是必要的。片状测试失败的间歇性让开发人员抓狂,因为片状测试的根源通常很难追踪:问题的症状(失败的测试)通常与非确定性行为的根源相去甚远,尤其是在系统测试中。冒烟测试的主要目的是快速确定系统或软件是否足够稳定以进行更全面的测试。不稳定是测试或代码中的非确定性导致测试失败的结果,而实际上它们是有效的(并且不太常见:反之亦然)。

2023-05-30 14:00:00 1327

原创 识别 JUnit Test潜在问题

(2)违反了“使测试简洁”的原则——在 makeForum 辅助方法中注册的用户数量超过了严格需要的数量(我们不需要注册超过一个用户并禁止他们来测试禁止行为)。(1) 违反了“使测试完整”的原则——论坛及其用户的详细信息隐藏在 makeForum 辅助方法中。(2)违反了“使测试简洁”的原则——在 makeForum 辅助方法中注册的用户多于测试本身所需的用户。(3)违反了“使测试简洁”的原则——在 makeForum 辅助方法中注册的用户多于测试本身所需的用户。缺乏清晰的“给定X,当Y,然后Z”的结构。

2023-05-30 11:00:00 516

原创 测试替身Test Doubles的5类型(Mockito)

Mockito 可以省掉很多手动写 double 的工作。Mockito 可以做的比我们在这里介绍的更多,请参阅Double会导致脆弱的测试。始终考虑集成测试是否更合适。

2023-05-30 10:30:00 1614

原创 java单元测试( Hamcrest 断言)

您可以使用 Hamcrest 匹配器创建自定义断言,以清晰简洁的方式表达预期行为,而不是仅仅依赖测试框架提供的默认断言方法。Hamcrest 匹配器可以使用“and”、“or”和“not”等逻辑运算符进行组合和组合,使您能够从更简单的断言创建复杂的断言。在谷歌,80% 的测试都是单元测试。“助手”方法可以通过使测试更简洁来帮助使测试更清晰——分解出重复的步骤,这些步骤的细节与被测试的行为无关。一个好的名称描述了正在测试的动作(“何时”)和预期结果(“然后”),有时还描述了状态(“给定”)。

2023-05-29 19:42:35 2196

原创 测试类型(单元、集成、系统或手动测试)

我并没有以任何有形的形式真正“存在”,但有些人把我写进了文件,这样他们就知道如何复制我。集成测试测试我们的代码与外部各方代码之间的集成。并不是所有的事情都可以用自动化的方式轻松测试,尤其是在有定性判断的地方(例如,搜索引擎结果的质量)。为了更真实地了解软件,我们还应该对其进行更真实的测试——包括它的所有数据库、前端和其他组件。比编写遍历整个系统的系统测试更简单,包括我们不关心的组件。(4)我是一个自动化测试,直接与使用数据库的代码进行交互。单元测试是一种非常有用的测试类型,但其本身往往是不够的。

2023-05-29 11:00:00 1380

原创 自动化测试套件(RSpec)

通过遵循最佳实践并考虑 API 使用者的需求,开发人员可以创建直观、健壮且可扩展的 API,从而带来更好的开发人员体验和成功的集成场景。使用 RSpec,您可以采用行为驱动的方法来测试和编写与您的代码所需行为密切相关的测试。编码自动化测试(例如,在JUnit中)作为提高生产力和速度的一种手段的想法可能看起来是对立的。**性能和效率:**性能优化的注意事项,例如高效的数据检索、缓存策略和适当的响应格式(例如 JSON、XML),可以有助于提高 API 的整体效率和响应能力。如果没有自动化测试,这是不可能的。

2023-05-29 10:45:00 1989

原创 Junit测试(assertEquals方法/assertThrows方法)

这两种方法都是有效的,它们之间的选择取决于您的特定测试需求。如果您只需要确保在不检查其属性的情况下抛出特定异常,那么直接使用assertThrows通常更简洁。如果您需要对抛出的异常执行额外的断言,那么在变量中捕获它将为您提供更大的灵活性。通过捕获抛出的异常,可以根据异常类型对其属性(如错误消息、堆栈跟踪或自定义字段)执行断言。当您需要验证异常类型以外的异常的特定详细信息时,这很有用。在这种情况下,您将抛出的异常分配给变量e。这允许您在抛出异常对象后执行额外的断言或更详细地检查异常对象。

2023-05-29 10:30:00 3065 1

原创 java 区分缺陷Defects/感染Infections/失败Failure

(1) 海平运行他的Python程序,根据学生一年级的模块成绩预测他们的最终学位分类。尽管程序员要对代码中的缺陷负责,但从技术上讲,他们可能并不总是有错——例如,问题可能是由一组规定不周的需求引起的。但在整个软件的执行过程中,该方法可能会被另一种方法在内部使用,并且故障可能会在很久以后发生在不同的地方。但在这一点上,它并没有影响程序的输出(到目前为止,故障还没有明显的影响)。(b) 测试本身是不正确的,例如,它对软件的行为做出了不正确的断言。感染是指执行缺陷时发生的情况,并且程序的状态受到影响。

2023-05-27 19:24:09 1379

原创 JAVA软件测试(贝泽成熟度模型)

在软件测试中也是如此:我们不知道,给定我们的测试输入,被测试的程序是否会陷入无限循环!拼写检查器的最佳用途不仅仅是找出拼写错误的单词,而是提高我们的拼写能力。我们仍然需要解决预言机的问题——如何知道,在给软件系统一些输入的情况下,它给出的输出是正确的。风险可能很小,后果并不重要,或者风险可能很大,后果是灾难性的,但风险总是存在的。计算机科学中的暂停问题基本上是不知道程序是否会在给定输入的情况下终止的问题。但是,在除了最琐碎的程序之外的任何程序中,正确性几乎都不可能实现或证明!

2023-05-27 18:41:44 1836

原创 CI/CD 基础知识

这意味着,只要满足特定的触发条件,预定义的工作流就会自动在 CI/CD 管道上运行,并会在出现任何问题时告诉您。(任务)我们想为不同的配置组合运行相同的工作流程。实际上,用户可能拥有不同的 JDK 版本是很常见的。我们想确保我们的代码是否可以在具有不同 JDK 的不同机器上正常运行。• 每个步骤要么是将要执行的shell 脚本,要么是将要运行的预定义操作。• 作业是在同一运行器上执行的一组工作流步骤。• 事件是存储库中触发工作流运行的特定活动。• 运行器是在触发时运行您的工作流的服务器。

2023-03-29 10:45:00 181 1

原创 报表覆盖率测试,分支覆盖测试

分支覆盖是一种众所周知的测试技术,旨在识别软件应用程序功能流中的每个可能的逻辑分支,并定义每个解决方案的可能结果。该过程通过至少执行一次每个分支来继续,其中术语“分支”可以定义为给出两个可能结果的点,术语“覆盖范围”可以定义为由多大程度上可以访问分支执行。否则,它可以被解释为验证程序到达每个角落的能力的必要性,以确保客户端提供的功能得到实现。它用于计算源代码中执行的语句总数,而不是源代码中存在的语句总数。语句覆盖率基于代码的结构在白盒测试过程下派生测试用例的场景。语句覆盖率是广泛使用的软件测试之一。

2023-03-23 10:30:00 110

原创 java变异测试(杀死突变体)

此外,模型的突变体可能代表相当不同的故障类别,因此终止此类突变体的测试用例可能会发现为终止代码而生成的测试用例未发现的故障。通常,我们会产生一个突变体通过仅应用一个运算符的一个实例:此类突变体是一阶的突变体。如果每个突变体都被 T 杀死,则认为测试套件 T 是足够的:对于每个(非等价的)突变体 p’在 M 中,T 中有一些测试用例 t 杀死了 p’. 突变覆盖率是被杀死的非等价突变体的百分比。只使用一阶突变体的原因是务实的:如果我们不将我们限制在一阶突变体,那么突变体的总数是可能是巨大的。

2023-03-23 10:15:00 1074

原创 Intellij Idea如何使用VM

如果有现成的call graph jar 文件的话那么就按照前面的class 的步骤一样做,但是选main文件的时候选择 app.CallGraphGenerator。D:\software-engineering\2023\commons-compress\target\classes 这个是你放文件的地方。因为这个文件太大, 所以我们也可以在取其中的一部分来print 比如org.apache.commons.compress.harmony。最后output2.dot 这个是你生成的文件.

2023-03-09 14:00:00 1039

原创 Ruby创建登录帐户

•异步编程是一种能够控制程序的策略,当主线正常流动以外的事件的发生’即当事件发生时执行某些代码•典型的示例是单击按钮在JavaScript中如何完成?•将异步操作存储到事件队列中•在主线程完成处理后,队列被处理•排队的操作尽快完成•他们将结果归还给JavaScript环境•4种方法:回调(经典;超时和间隔(延迟和重复执行;承诺(新);等待/异步(较新)

2023-03-01 10:00:00 271

原创 射线跟踪(递归射线跟踪)

•如果每个对象的n多边形,则是p x m x n射线多边形交点计算: If: p=1000x1000 and m=100 and n=1000, then 100,000,000,000 ray-polygon intersection calculations。•如果阴影触角在通往光源的途中相交不透明的对象,则将Ilocal设置为该光源的环境术语(或调制分散项)•由于数值不准确,相交点在形状内部,因此浅射线会相交相同的对象,从而产生“阴影”(斑点外观)

2023-01-12 14:00:00 1230

原创 边界量(BV)和空间分区(SP)(轴对准边界框AABB,定向边界框OBB)

•一个1000x1000的场景图像,其中包含100个对象的1000个多边形中的每个物体需要1000亿个交叉点计算,才能第一次命中射线跟踪。如果b^2-4ac> 0,则将根替换为线方程,以给出相交点的(x,y,z);•A,B,C是多边形正常向量NP的组件,D是通过将任何顶点替换为(AX+by+Cz+d = 0)来计算的。•带中心(L,M,N)的球体,半径为R:(X-L)^2 +(Y-M)^2 +(Z-N)^2 = R ^2。•使用两个点(x1,y1,z1)和(x2,y2,z2)给定射线(线)方程式。

2023-01-12 01:14:01 781

原创 计算机动画(一般参数曲线,Bezier立方曲线,双插值方法)

•一系列单独的“图纸”播放足够快地说服了它正在看到连续运动•示例:“赛马疾驰的动画顺序。拍摄的照片Eadweard Muybridge(卒于1904年),于1887年在费城首次出版。

2023-01-11 11:00:00 640

实现文本的作者风格识别(SVM/LogicRegression/Bert)

实现文本的作者风格识别(SVM/LogicRegression/Bert),其中LogicRegression实现的最好.理论知识和结果分析

2023-10-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除